bash變量冒號擴展

參考自網道

Bash 提供四個特殊語法,跟變量的默認值有關,目的是保證變量不爲空。

  • 如果變量爲空則返回默認值,否則返回變量本來的值
${varname:-defaultval}

上面語法的含義是,如果變量varname存在且不爲空,則返回它的值,否則返回defaultval。它的目的是返回一個默認值,比如${count:-0}表示變量count不存在時返回0。

類似的寫法是:

if [ -n "$varname" ]; then
  echo $varname
else
  echo "defaultval"
fi
  • 如果變量爲空則返回並設置默認值,否則返回變量原來的值
${varname:=defaultval}

上面語法的含義是,如果變量varname存在且不爲空,則返回它的值,否則返回defaultval並且將它設爲defaultval。它的目的是設置變量的默認值,比如${count:=0}表示變量count不存在時返回0,且將count設爲0。和上面那條擴展不同是,會給變量varname做賦值操作。

類似寫法是:

if [ -n "$varname" ]; then
  echo $varname
else
  varname="defaultval"
  echo "defaultval"
fi
  • 如果變量非空返回指定的值,否則返回空
${varname:+word}

上面語法的含義是,如果變量名存在且不爲空,則返回word,否則返回空值。它的目的是測試變量是否存在,比如${count:+1}表示變量count存在時返回1(表示true),否則返回空值。

類似的寫法是:

if [ -z "$varname" ]; then
  echo $varname
else
  echo "defaultval"
fi
  • 變量爲空則打印指定信息,並退出腳本執行
${varname:?message}

上面語法的含義是,如果變量varname存在且不爲空,則返回它的值,否則打印出varname: message,並中斷腳本的執行。如果省略了message,則輸出默認的信息“parameter null or not set.”。它的目的是防止變量未定義,比如${count:?"undefined!"}表示變量count未定義時就中斷執行,拋出錯誤,返回給定的報錯信息undefined!。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章