28

現在、シェル変数からコマンドを実行する際に問題が発生しています。

一般的に、以下は期待どおりに機能します。

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

4

2 に答える 2

39

配列は、パラメーター全体を維持するのに役立ちます。

command=(su aUser -s /bin/bash -c 'echo A')

次のように呼び出します。

"${command[@]}"
于 2012-06-18T10:18:38.507 に答える
29

必要evalです。

$ eval $VARIABLE
于 2012-06-18T08:39:06.923 に答える