1.1.1 ${value:-word}
如果變量value沒有定義,則返回word,如果已經賦值則返回value變量的值
result=${jimyy:-UNSET}
echo $result
由於jimyy沒有定義,因此返回UNSET
這種變量功能判斷變量在沒有定義時,確保變量始終有一個返回值。
1.1.2 ${value:=word}
當value沒有定義時,則把word賦給value,然后通過${value:=word} 值把vaule值打印出來。
result=${jimyy:=UNSET}
echo $result
echo $jimyy
結果兩個變量的值都是UNSET
這個變量功能是在變量沒有定義時,給變量賦一個值,並且返回。
1.1.3 ${value:? "not defined"} 當value沒有定義時,返回
bash: vaule : not defined
用於捕捉變量沒有定義而導致的錯誤
1.1.4 ${value:+word} 當變量存在且非null時,返回word,否則返回null
用於測試變量是否存在
1.1.5 ${value-word} 如果value不存在,則用word替代。
變量替換功能在某些場景下有顯著的功能。
當對變量進行操作時,最好先判斷變量是否非空,比如對目錄類型的變量進行rm -rf操作,必須要對這個變量進行判斷,
因為如果變量為空,或者未賦值,則可能會從根目錄或/root目錄開始刪除,影響是特別大,因此要慎重,因此在這種場景下可以使用變量替換功能,防止意外刪除操作。
例如:
path1=/opt/server/backup/
find ${path1:=/tmp/} -name "*.tar.gz" -type f|xargs rm -f