使用exec运行命令时,如何保留单引号和双引号?
#!/bin/sh
CMD="erl -eval 'erlang:display("foo")'"
exec $CMD
尝试用反斜杠,但没有帮助。例如,如果我做的话对我来说听起来很明显:
#!/bin/sh
CMD="erl -eval 'erlang:display(\"foo\")'"
echo $CMD
exec $CMD
我得到echo
的输出正是我想要的,但是在使用exec
时命令没有正确执行。
我正在研究Snow Leopard。
任何帮助?
答案 0 :(得分:1)
如果您使用eval
而不是exec
,它将会有效,如果这是您脚本中的最后一件事,它将无法在操作上产生巨大差异......
#!/bin/sh
CMD="erl -eval 'erlang:display(\"foo\")'"
echo $CMD
eval $CMD
答案 1 :(得分:1)
尝试使用数组:
CMD=(erl -eval 'erlang:display("foo")')
echo "${CMD[@]}"
"${CMD[@]}"