在 Shell 腳本中,:-, :=, :?, :+, :n 是一些用於參數擴展和變量替換的特殊語法。這些語法有助於在不同情況下處理變量的值。以下是這些語法的詳細解釋:
:- (Default value)
用於給變數設置default value。 如果變量未設置或為空,則使用指定的默認值。
echo ${var:-default_value}
NAME=
printf "%s\n" "${NAME:-Eirik}"
> Eirik
echo $NAME
>
如果 var 未設置或為空,則輸出 default_value。
變數的實際值未受影響,保持不變
:= (Assign default value)
如果變量未設置或為空,則給變數賦予默認值,並返回該值。
echo ${var:=default_value}
如果 var 未設置或為空,則將 default_value assign 給 var 並輸出 default_value。
:? (Error if unset)
如果變量未設置或為空,則打印錯誤消息並退出腳本。
echo ${var:?error_message}
如果 var 未設置或為空,則輸出 error_message 並退出腳本。
:+ (Alternate value)
如果變量已設置且非空,則使用指定的替代值。
echo ${var:+alternate_value}
如果 var 已設置且非空,則輸出 alternate_value。
:n
這個語法在標準 Shell 中並不存在。可能是拼寫錯誤或是指代某個特定語境下的自定義語法。