2017-09-27 24 views
1
sed -e "s/${MyToken}/${arg}/g" file 

值「ARG」,直到9日argument.after 10日參數做工精細的失敗如何通過更多的則10論點的shell

+0

第9個和第10個參數的價值是什麼? –

+0

編寫完整的代碼和錯誤,因爲這適用於我。 shell腳本除了最多255個參數和$ {}它應該工作 –

+0

可能重複的[bash腳本中的命令行參數](https://stackoverflow.com/questions/12935444/command-line-arguments-in-bash-腳本) – ceving

回答

0

下面是一個例子:

#!/bin/ksh 
echo There is $# parameters 
while [ $# -ne 0 ]; do 
     echo $1 
     shift 
    done 

輸出:

 Will:/home> ./script a b c d e f g h i j k l m n o p q r s t u v w x y z 
    There is 26 parameters 
     a 
     b 
     c 
     d 
     e 
     f 
     g 
     h 
     i 
     j 
     k 
     l 
     m 
     n 
     o 
     p 
     q 
     r 
     s 
     t 
     u 
     v 
     w 
     x 
     y 
     z 

$#計數的傳遞給腳本的參數的數目。

Shift正在將參數移動到左側,因此在一個循環後$1變爲b等等。

0

那麼通常當你需要超過10個參數的腳本的邏輯是有缺陷的。

該限制通常是基於你使用的shell可以使用更多,但如果你使用舊的sh通常你被鎖定,直到第9個參數。

如果你想遍歷多個參數,我可以推薦簡單:

for arg in "[email protected]"或使用shift在某種0​​「移動」位置參數|| for循環。

更好的方法是通過像getoptgetopts這樣的工具解析命令行參數。

+0

'對於arg'就足夠了。例如:'set 1 2 3;爲一個;做echo $ a;完成' – ceving

+0

@ceving是的,這是另一種選擇,我敢肯定還有更多。仍然最好是使用getopt或getopts。 – tukan