如何在bash脚本中将参数转发给其他命令?

在我的bash脚本里,我想分析零个,一个或两个参数(脚本可以识别它们),然后将剩下的参数转发到脚本中调用的命令。 我怎样才能做到这一点?

使用shift内置命令来“吃”参数。 然后调用subprocess并传递"$@"参数以包含所有剩余的参数。 注意引号,它们应该被保留,因为它们引起参数列表的扩展被适当地引用。

bash使用shift命令:

例如shifttest.sh:

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

shifttest.sh 1 2 3产生

 1 2 3 

bash支持子集参数(请参阅子集和子string ),因此您可以select要处理/传递的参数,如下所示:

打开新文件并编辑它: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