2011-01-28 126 views
62

是否有方法可以更改Bash腳本中的命令行參數。舉例來說,Bash腳本的調用方式如下:在Bash中更改命令行參數

./foo arg1 arg2 

有沒有辦法在腳本中更改arg1的值?說,像

$1="chintz" 

回答

95

你必須重置所有參數。要改變例如$3

$ set -- "${@:1:2}" "new" "${@:4}" 

基本上你set所有參數及其當前值,除了要改變一個(或多個)。

"${@:1:2}" notation被擴展到兩個(因此2在符號)的位置參數偏離1開始(即$1)。在這種情況下,它是"$1" "$2"的縮寫,但是當您想要替換例如"${17}"

+1

所以,爲了改變$ 3,我必須改變$ 1和$ 2,是嗎?並改變他們到什麼? 「重置」是什麼意思? – Sriram 2011-01-28 11:31:49

+2

當然,要「$ 1」和「$ 2」。 – 2011-01-28 11:33:11

17

你最好分配$1$2更有意義的變量(我不知道,input_filename = $1output_filename = $2或東西),然後重寫這些變量(input_filename = 'chintz')之一,離開輸入腳本不變,萬一它在別處是需要的。