我目前在从shell变量执行命令时遇到问题.
通常,以下工作符合预期:
COMMAND="echo A"
echo $COMMAND
$COMMAND
Run Code Online (Sandbox Code Playgroud)
生产:
echo A
A
Run Code Online (Sandbox Code Playgroud)
但如果我这样做
COMMAND="su aUser -s /bin/bash -c 'echo A'"
echo $COMMAND
$COMMAND
Run Code Online (Sandbox Code Playgroud)
我明白了
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
Run Code Online (Sandbox Code Playgroud)
如果我进入该行
su aUser -s /bin/bash -c 'echo A'
Run Code Online (Sandbox Code Playgroud)
直接按预期工作.
似乎我的假设是$ COMMAND等于输入内容,因为命令直接是错误的.
1)有谁知道如何从变量运行命令?
2)究竟有什么区别
COMMAND="command"
$COMMAND
Run Code Online (Sandbox Code Playgroud)
和
command
Run Code Online (Sandbox Code Playgroud)
?
gle*_*man 33
数组对于保持参数整体非常有用:
command=(su aUser -s /bin/bash -c 'echo A')
Run Code Online (Sandbox Code Playgroud)
并完全像这样调用它:
"${command[@]}"
Run Code Online (Sandbox Code Playgroud)
Igo*_*bin 24
你需要eval
.
$ eval $VARIABLE
Run Code Online (Sandbox Code Playgroud)