Выполнить команду, содержащую кавычки из переменной оболочки [дубликат]

На этот вопрос уже есть ответ здесь:

В настоящее время у меня проблемы с выполнением команды из переменной оболочки.

В общем, следующее работает так, как ожидалось:

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

?

23
задан Markus Kreusch 18 June 2012 в 08:35
поделиться