sh -c:終了していない引用文字列エラー[重複]

sh -c:終了していない引用文字列エラー[重複]

私は次のエラーを理解しようとして数時間を費やしました。

私のスクリプト

CMD="sh -c 'echo \"a\"'"
$CMD

間違い:

"a"': 1: "a"': Syntax error: Unterminated quoted string

もちろん、このようにしてecho $CMD結果を貼り付けると、期待どおりに機能します。

エラーが発生したのはなぜですか?

編集する:

回避策ではなく説明を要求します。だから、次のリンクが私の質問に答えないと思います。 関数内で参照するとエラーが発生します。

ベストアンサー1

これはうまくいきません。シェルが単語分割を実行すると、次のようになります。4つ議論:

sh
-c
'echo
"a"'

これを行うには、bash配列を使用する必要があります。

cmd=( sh -c 'echo "a"' )
"${cmd[@]}"

おすすめ記事