在shell脚本中连接命令字符串

时间:2013-09-03 16:09:30

标签: bash shell scripting

我正在维护一个现有的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是否有效语法,以便在MY_ARGUMENT作为参数的shell脚本中执行shell命令?

2 个答案:

答案 0 :(得分: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.

答案 1 :(得分:2)

它的工作方式与预期的方式相同,但fubar将成为第二个参数($2),而不是$1。 因此,如果您echo中的/bin/command个参数,您将得到类似的内容:

echo "$1" # prints '-dosomething'
echo "$2" # prints 'fubar'