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

时间:2009-10-08 13:05:15

标签: bash command-line

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

3 个答案:

答案 0 :(得分:196)

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

答案 1 :(得分:26)

bash使用 shift 命令:

e.g。 shifttest.sh:

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

shifttest.sh 1 2 3产生

1
2 3

答案 2 :(得分:15)

Bash支持子集化参数(参见Subsets and substrings),因此您可以选择要处理/传递的参数。

  1. 打开新文件并进行编辑:vim -webkit-appearance: none; -moz-appearance: none; appearance: none;

    r.sh
  2. 运行它:

    echo "params only 2    : ${@:2:1}"
    echo "params 2 and 3   : ${@:2:2}"
    echo "params all from 2: ${@:2:99}"
    
  3. 结果是:

    $ chmod u+x r.sh
    $ ./r.sh 1 2 3 4 5 6 7 8 9 10