どのような状況でBash変数を二重引用符で囲んではいけませんか? [コピー]

どのような状況でBash変数を二重引用符で囲んではいけませんか? [コピー]

[[...]]insideのように、Bashで変数を拡張するときや変数の割り当ての右側に使用するときに二重引用符を必要としない状況がいくつかあることがわかります。

変数の引用を読むときに二重引用符が必要ない場合はまれです。

どのような状況で引用行為が望ましくないのですか?参照が不要な状況を言うのではなく、参照変数が何かの動作を積極的に妨げる状況を言うことです。

ベストアンサー1

空の変数を消去するには(空の文字列を保持するのとは対照的に)引用しないでください。

verbose=
[[ some_condition ]] && verbose=-v

# ...later...

some_program $verbose some_args

変数にスペースで区切られた引数が含まれ、シェルがそれを別の単語として扱うようにするには、引用しないでください。

exclude_file=
[[ -s excludelist.txt ]] && exclude_file='--exclude excludelist.txt'

# ...later...

rsync -avP $exclude /path/to/source/ remote:target

一般的なアプローチは常に二重引用符を使用します。なぜあなたがそれをしたくないのかわからない限り

おすすめ記事