Bash

什麼情況下 Bash 變數不應該被雙引號括起來?

  • November 23, 2016

我知道在 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

一般的方法是始終使用雙引號,除非您知道為什麼不想要​​它們。**

引用自:https://unix.stackexchange.com/questions/324238