Баш, Exec и цитирующий ад - PullRequest
       10

Баш, Exec и цитирующий ад

1 голос
/ 01 сентября 2011

Как сохранить одинарные и двойные кавычки при запуске команды с помощью 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 ]

1 голос
/ 01 сентября 2011

Попробуйте использовать массив:

CMD=(erl -eval 'erlang:display("foo")')
echo "${CMD[@]}"
"${CMD[@]}"
1 голос
/ 01 сентября 2011

Это будет работать, если вы используете eval вместо exec, если это последнее, что в вашем скрипте, это не будет иметь большого значения в оперативном плане ...

#!/bin/sh

CMD="erl -eval 'erlang:display(\"foo\")'"
echo $CMD
eval $CMD
...