2009-10-08 40 views

回答

153

使用shift內置命令 「吃」 的參數。然後調用子進程並將它傳遞給參數"[email protected]"以包含所有剩餘的參數。注意引號,它們應該保留,因爲它們會引起參數列表的擴展被正確地引用。

+18

其實「$ @」比$ *更安全 – pixelbeat 2009-10-08 13:10:15

+4

有什麼區別? – 2009-10-08 13:14:08

+1

@ pixelbeat:謝謝,很好。我編輯過。 @ŁukaszLew:請參閱手冊中的鏈接頁面。 :)基本上,它處理引用更好。 – unwind 2009-10-08 13:18:52

18

bash中使用命令:

例如 shifttest.sh:

#!/bin/bash 
echo $1 
shift 
echo $1 $2 

shifttest.sh 1 2 3產生

1 
2 3 
7

bash的支持子集參數(見Subsets and substrings),所以你可以選擇哪些參數過程/通過這樣的:

打開新文件,並對其進行編輯:VIM r.sh

echo "params only 2 : ${@:2:1}" 
echo "params 2 and 3 : ${@:2:2}" 
echo "params all from 2: ${@:2:99}" 

來看,它:

chmod u+x r.sh 
./r.sh 1 2 3 4 5 6 7 8 9 10 

結果是:

params only 2 : 2 
params 2 and 3 : 2 3 
params all from 2: 2 3 4 5 6 7 8 9 10 
相關問題