> 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