2009-10-08 42 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 
相关问题