私は次のエラーを理解しようとして数時間を費やしました。
私のスクリプト
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[@]}"