我正在寫一個bash腳本,它接受一些可選參數。我想翻譯它們並將它們傳遞給另一個腳本。但是,我很難適時地傳遞可選參數。如何將可選參數傳遞給bash腳本中的另一個命令?
這裏是什麼,我設法學會了僞工作綱要:
a.sh:
if arg1 in arguments; then
firstArg="first argument"
fi
if arg2 in arguments; then
secondArg="second argument"
fi
./b.sh $firstArg $secondArg "default argument"
注意,在參數的空間。
b.sh:
for arg in "[email protected]"
do
echo $arg
done
我想打電話給b.sh
,任選firstArg
和secondArg
和默認參數,如下所示:
./b.sh $firstArg $secondArg "default argument"
這樣做的問題是,如果$firstArg
或$secondArg
是帶空格的字符串,它們將被表示爲多個參數,並且輸出將如下所示:
first
argument
second
argument
default argument
好了,這是很容易解決,讓我們加入周圍的引號,像這樣獲取的參數的整個字符串:
./b.sh "$firstArg" "$secondArg" "defaultArg"
問題是,如果,例如,firstArg
沒有設置,它導致一個空行(因爲它會解釋""
作爲參數),所以輸出會是這樣的:
(blank line here)
second argument
defaultArg
我還試圖構建一個字符串,並將其傳遞給shell腳本,但它不似乎也以這種方式工作(it int將整個字符串作爲參數進行錯誤處理,即使我用引號分隔參數)。
請注意,從命令行調用b.sh
引用的參數可以正常工作。有沒有辦法在bash腳本中模仿這種工作方式?
旁白:就因爲我複製你的鉛和使用'.sh'擴展在可執行文件上(即具有'execv()' - 家族調用成功的+ x權限的文件)並不意味着這是個好主意。通常,UNIX中的命令不應該有任何擴展名,無論它們是通過shell腳本,Python腳本還是編譯的二進制文件提供的。 –
您能否明確說明這是否適用於使用'#!/ * bin/sh'或'#!/ bin/bash'? –
我正在使用bash。 – Andrew