Bash
什麼情況下 Bash 變數不應該被雙引號括起來?
我知道在 Bash 中擴展變數時不需要使用雙引號的幾種情況,例如 inside
[[...]]
,或者在變數賦值的右側使用時。在閱讀有關引用變數的資訊時,我經常聽說在任何地方都使用雙引號通常會更好,因為只有極少數情況下您不需要它們。
在哪些情況下不希望引用的行為?我不是在談論不需要引用的情況,而是在引用變數會主動阻止某些東西工作的情況下。
當您希望空變數消失時不要引用(與保留為空字元串不同):
verbose= [[ some_condition ]] && verbose=-v # ...later... some_program $verbose some_args
當您的變數包含空格分隔的參數並且您希望 shell 將它們視為單獨的單詞時,不要引用
exclude_file= [[ -s excludelist.txt ]] && exclude_file='--exclude excludelist.txt' # ...later... rsync -avP $exclude /path/to/source/ remote:target
一般的方法是始終使用雙引號,除非您知道為什麼不想要它們。**