2010-03-05 72 views
34

如果你有Python的list,你想從2到n的元素可以做一些漂亮的像猛砸,參數列表段

list[2:] 

我想在Bash中使用的argv類似的東西。我想將所有元素從$ 2傳遞給argc到一個命令。我目前有

command $2 $3 $4 $5 $6 $7 $8 $9 

但這不夠優雅。會是「正確」的方式?

回答

61

你可以做 「切割」,以及,[email protected]得到所有的參數在bash。

echo "${@:2}" 

獲得第二個參數起

$ cat shell.sh 
#!/bin/bash 
echo "${@:2}" 

$ ./shell.sh 1 2 3 4 
2 3 4 
+9

你也應該把它包在雙引號,以避免出現問題在使用'./shell.sh 1 2「多字參數」4 5「調用''echo'$ {@:2}''時可以正常工作。 – 2010-03-06 19:08:15

+1

值得注意的是,這也支持長度,即''$ {@:start:len}「' – Dan 2013-11-18 10:48:29

+0

如果'$ {@:2}'爲空,您還可以給出一個默認值嗎? – Gabriel 2015-08-07 21:22:24

4

店鋪$1某處,然後shift和使用[email protected]

+0

很好的建議,但我認爲一個列表上的操作會更優雅 – Mike 2010-03-06 00:04:17