在 linux/bash 中加入命令行参数的前面



我想将提供给脚本的命令行参数传递给另一个命令,但我也想先在前面添加一些额外的参数。我怎样才能用 bash 做到这一点?

这会将所有参数发送到命令:

command $@

但我想要更像:

command [argument1, argument2, $@]

你怎么能在 bash 中做这样的事情?

@ThatOtherGuy的答案是正确的。

如果您希望将几个参数"取消移位"到位置参数中,请执行以下操作:

set -- arg1 arg2 "$@"
cmd "$@"

如果您有grep foo并且想在foo之前添加-f,则可以使用grep -f foo 。同样的事情也适用于这里:

cmd argument1 argument2 "$@"

如果您想要一种更通用的方式来执行此操作(推荐),请使用以下命令:

#!/usr/bin/env bash
function xyz {
  echo "${args[@]}"  # arguments will printed out
}
function abc {
    local args=()
    args+=(argument1)
    args+=(argument2)
    args+=("$@")
    xyz "${args[@]}"
}

要进行测试,请获取上述代码

source script.sh && abc

相关内容

  • 没有找到相关文章

最新更新