我想将提供给脚本的命令行参数传递给另一个命令,但我也想先在前面添加一些额外的参数。我怎样才能用 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