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

5

有一个脚本调用了另一个程序。以下是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。最好的方法是什么?

如果您只是将所有参数传递给foo,则使用foo $*,例如/usr/bin/foo -A -B -C $*。 - user5976242
2个回答

13

使用数组。

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

1
你可以添加一个条件语句。我相信有更少重复的方法来实现,但这应该可以工作:
#!/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"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接