Bash,exec和引用地狱

时间:2011-09-01 08:13:37

标签: bash escaping quotes

使用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。

任何帮助?

2 个答案:

答案 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[@]}"