Bash変数拡張が引用符を保持するのはなぜですか?

Bash変数拡張が引用符を保持するのはなぜですか?
> echo "hi"
hi
> VAR='echo "hi"'
> $VAR
"hi"

上記のコマンドの出力が異なるのはなぜですか?

一重引用符でも同様のことが起こります。

> VAR="echo 'hi'"
> $VAR
> 'hi'

ベストアンサー1

追加の見積もりペアは、追加の評価フェーズでのみ使用されます。たとえば、力eval

bash-4.2$ VAR='echo "hi"'

bash-4.2$ $VAR
"hi"

bash-4.2$ eval $VAR
hi

しかし、通常、文字列にパラメータを含むコマンドを入れるのは良い考えではありません。代わりに配列を使用してください。

bash-4.2$ VAR=(echo "hi")

bash-4.2$ "${VAR[@]}"
hi

おすすめ記事