2

我正在维护一个现有的 shell 脚本,它将命令分配给 shell 脚本中的变量,例如:

MY_COMMAND="/bin/command -dosomething"

然后稍后通过执行以下操作将“参数”传递给 $MY_COMMAND :

MY_ARGUMENT="fubar"

$MY_COMMAND $MY_ARGUMENT

这个想法$MY_COMMAND应该在$MY_ARGUMENT附加的情况下执行。

现在,我不是 shell 脚本方面的专家,但据我所知,$MY_COMMAND不会$MY_ARGUMENT作为参数执行。但是,如果我这样做:

MY_ARGUMENT="itworks"
MY_COMMAND="/bin/command -dosomething $MY_ARGUMENT"

它工作得很好。

调用它的语法是否有效,$MY_COMMAND $MY_ARGUMENT以便它在 shell 脚本中执行 shell 命令并MY_ARGUMENT作为参数?

4

2 回答 2

5

使用 Bash,您可以使用数组:

MY_COMMAND=("/bin/command" "-dosomething")  ## Quoting is not necessary sometimes. Just a demo.
MY_ARGUMENTS=("fubar")  ## You can add more.

"${MY_COMMAND[@]}" "${MY_ARGUMENTS[@]}"  ## Execute.
于 2013-09-03T16:38:07.530 回答
3

它的工作方式与您期望的一样,但fubar将是第二个参数 ( $2) 而不是$1.
所以如果你在你echo的论点,/bin/command你会得到这样的东西:

echo "$1" # prints '-dosomething'
echo "$2" # prints 'fubar'
于 2013-09-03T16:11:56.520 回答