將變數傳遞給腳本

將變數傳遞給腳本

有什麼區別:

./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 特殊變數中的字符,預設為空格)或通配字元且您不引用它,則每個單字都會被考慮用於檔案名稱產生(通配),其擴充會產生與無論你在做什麼。

相關內容