有什麼區別:
./script.sh "$VARIABLE"
和
./script.sh ${VARIABLE}
有沒有?
答案1
$VARIABLE
如果它們是獨立的單詞,則它們${VARIABLE}
實際上是相同的。但請注意以下範例,尤其是在腳本中
VARIABLE=USER
echo $VARIABLE
你得到輸出
USER
但是當你輸入
echo $VARIABLE1
期待得到
USER1
你什麼也得不到,因為沒有VARIABLE1
定義變數
但如果你使用
echo ${VARIABLE}1
你得到了預期的USER1
輸出。
答案2
來自肖恩·J·戈夫:$VAR 與 ${VAR} 及引用或不引用
VAR=$VAR1 是 VAR=${VAR1} 的簡化版本。有些事情第二個可以做,而第一個不能,例如引用數組索引(不可移植)或刪除子字串(POSIX-可移植)。請參閱《Bash 初學者指南》的「更多關於變數」部分以及 POSIX 規格中的參數擴展。
在變數周圍使用引號,如 rm -- "$VAR1" 或 rm -- "${VAR}" 是個好主意。這使得變數的內容成為原子單元。如果變數值包含空格($IFS 特殊變數中的字符,預設為空格)或通配字元且您不引用它,則每個單字都會被考慮用於檔案名稱產生(通配),其擴充會產生與無論你在做什麼。