如何在bash脚本中有条件地添加额外参数?

如何在bash脚本中有条件地添加额外参数?,bash,shell,Bash,Shell,有一个脚本调用另一个程序。下面是program.sh。这可能看起来毫无意义,但我省略了很多细节,而且……假设我想保持结构不变 #!/usr/bin/env bash function run_this { /usr/bin/foo -A -B -C } run_this 我想通过传递给program.sh的参数来更改传递给/usr/bin/foo的参数。例如,如果调用program.sh--quiet,那么/usr/bin/foo-A-B-C-X。实现这一点的最佳方法是什么?您可以添加

有一个脚本调用另一个程序。下面是
program.sh
。这可能看起来毫无意义,但我省略了很多细节,而且……假设我想保持结构不变

#!/usr/bin/env bash
function run_this {
    /usr/bin/foo -A -B -C
}
run_this

我想通过传递给
program.sh
的参数来更改传递给
/usr/bin/foo
的参数。例如,如果调用
program.sh--quiet
,那么
/usr/bin/foo-A-B-C-X
。实现这一点的最佳方法是什么?

您可以添加一个条件。我相信有较少重复的方法可以做到这一点,但这应该是可行的:

#!/bin/bash

function run_this {
    if [[ "$1" = "--quiet" ]]; then
       /usr/bin/foo -A -B -C -X
    else 
       /usr/bin/foo -A -B -C
    fi
}
run_this "$1"
使用数组

cmd=(/usr/bin/foo -A -B -C)
if somecond; then
  cmd+=(-X)
fi
"${cmd[@]}"

如果您只是将所有参数传递给foo,请使用foo$*例如/usr/bin/foo-A-B-C$*