我目前在从shell变量执行命令时遇到问题。
通常,以下工作符合预期:
COMMAND="echo A"
echo $COMMAND
$COMMAND
产生
echo A
A
但如果我这样做
COMMAND="su aUser -s /bin/bash -c 'echo A'"
echo $COMMAND
$COMMAND
我得到了
su aUser -s /bin/bash -c 'echo A'
Password:
A': -c: line 0: unexpected EOF while looking for matching `''
A': -c: line 1: syntax error: unexpected end of file
如果我输入
行su aUser -s /bin/bash -c 'echo A'
直接按预期工作。
似乎我的假设是$ COMMAND等于输入内容,因为命令直接是错误的。
1)有谁知道如何从变量运行命令?
2)
之间究竟有什么区别COMMAND="command"
$COMMAND
和
command
答案 0 :(得分:31)
数组对于保持参数整体非常有用:
command=(su aUser -s /bin/bash -c 'echo A')
并完全按照以下方式调用它:
"${command[@]}"
答案 1 :(得分:23)
您需要eval
。
$ eval $VARIABLE