在linux / bash中添加命令行参数

时间:2014-02-14 22:22:48

标签: linux bash command-line-arguments

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

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

command $@

但我想要更像的东西:

command [argument1, argument2, $@]

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

3 个答案:

答案 0 :(得分:14)

@ ThatOtherGuy的回答是正确的。

如果您希望在位置参数中“取消”一些参数,请执行以下操作:

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

答案 1 :(得分:5)

如果您有grep foo并且想要在-f之前添加foo,则可以使用grep -f foo。同样适用于此:

cmd argument1 argument2 "$@"

答案 2 :(得分:0)

如果您想要更通用的方法(推荐),请使用:

#!/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