Shell script: 特殊語法解析

冒號、加號、減號、問號、括號的意義用法

Posted by Eirik on 29 Feb, 2024

在 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 中並不存在。可能是拼寫錯誤或是指代某個特定語境下的自定義語法。