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

How do I forward parameters to other command in bash script?

在我的bash脚本中,我希望解析零个、一个或两个参数(脚本可以识别它们),然后将其余参数转发到脚本中调用的命令。我该怎么做?


使用shift内置命令"接受"参数。然后调用子进程并将其传递给"$@"参数以包含所有剩余参数。注意引号,它们应该保留,因为它们会导致参数列表的扩展被正确引用。


bash使用shift命令:

例如SHITETest.SH:

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

shifttest.sh 1 2 3产生

1
2
1
2 3


bash支持子设置参数(请参见子集和子字符串),因此您可以这样选择要处理/传递的参数。

  • 打开新文件并编辑:vim r.sh

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

    1
    2
    $ chmod u+x r.sh
    $ ./r.sh 1 2 3 4 5 6 7 8 9 10
  • 结果是:

    1
    2
    3
    params only 2    : 2
    params 2 and 3   : 2 3
    params all from 2: 2 3 4 5 6 7 8 9 10