如何在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