我正在维护一个现有的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命令?
答案 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'