2016-02-12 73 views
0

我有2個腳本。如何在不更改腳本1的情況下從腳本1調用腳本2及其2個參數?

1)script1.sh - >它只是調用script2.sh並保留日誌和時間等。我無法對script1.sh進行任何更改。它只是用於呼叫script2.sh

2)script2.sh - >它只是一個命令,從一個特定的位置加載一個文件到另一個位置。我從位置1傳遞的文件名作爲參數1和文件名,其中它被上傳到位置2作爲參數2

script2.sh:

file1=$1 
file2=$2 

/home/test put /home/$1 uploads/final/$2 

,我運行最終腳本是:

script1.sh script2.sh file1=abc.csv file2=xyz.csv 

但不知何故,我不能使用調用的腳本2的參數有沒有一種方法,我可以使用調用的腳本2的參數不改變腳本1.

任何幫助,將不勝感激。

+0

你能編輯你的文章並提供script1.sh的全文嗎?這是門控項目,將決定script2.sh應包含的內容。猜測,script1只使用'$ 1',但忽略它自己的'$ 2'和'$ 3',所以它不能將它們傳遞給script2。如果你還可以發佈script2,那也會有所幫助 –

+0

script1.sh不過是一個處理日誌的巨大文件,如果發生故障等,它會發送一封電子郵件。它唯一做的就是調用script2.sh。我可以獨立運行script2.sh,但我需要script1.sh的所有日誌和其他功能。所以我需要使用script1.sh而不改變它。我已經發布了我的內容script2.sh – Austin

+1

發佈script1用來調用script2的實際行。這應該足夠[必要] –

回答

0

script2.sh無法訪問給予script1.sh的參數。如果script1.sh未將參數傳遞給script2.sh,則可以改爲使用環境變量。

file1=abc.csv file2=xyz.csv script1.sh script2.sh 

這將設置環境變量file1file2在調用script1.sh。除非script1.sh採取有意的措施來覆蓋它們,否則它們會自動傳遞到script2.sh

然後,您可以刪除分配給file1file2script2.sh中的行。他們已經被設置在環境中。

+0

script1.sh使用一個參數來調用script2.sh。但script2.sh有兩個參數沒有實現。 – Austin

+0

任何'script1.sh'不能傳遞的東西都可以像這樣作爲環境變量傳遞。 – Barmar

0

像頭腦一樣思考。作爲Barmar說,使用環境變量:

創建一個啓動程序腳本:

#!/bin/sh - 

export SCRIPT2_A1=$1 
export SCRIPT2_A2=$2 

script1.sh script2.sh 

現在改變script2.sh看起來像這樣:

#!/bin/sh 

A1=${SCRIPT2_A1:-$1} 
A2=${SCRIPT2_A2:-$2} 

# now use A1 and A2 as you would $1 and $2 
0

使用$ script1.sh "script2.sh file1=abc.csv file2=xyz.csv"

也就是說加雙引號

+0

這取決於'script1.sh'在運行給定命令時如何使用它的參數。 – Barmar

+0

@Barmar,但OP不得不說。 –

+0

@Barmar,你是完美的,但我正在努力爲OP找到可能的解決方法。有一個很好的機會,我的想法可能點擊很好。讓我們看看他說什麼。 –

相關問題