如果變數為空或未設定,則會出錯

此語義類似於預設值替換的語義,但它不是替換預設值,而是使用提供的錯誤訊息進行錯誤輸出。形式是 ${VARNAME?ERRMSG}${VARNAME:?ERRMSG}。與:的形式將我們的錯誤如果變數為取消設定,而沒有表單將唯一的錯誤出如果變數未設定。如果丟擲錯誤,則輸出 ERRMSG 並將退出程式碼設定為 1

#!/bin/bash
FOO=
# ./script.sh: line 4: FOO: EMPTY
echo "FOO is ${FOO:?EMPTY}"
# FOO is 
echo "FOO is ${FOO?UNSET}"
# ./script.sh: line 8: BAR: EMPTY
echo "BAR is ${BAR:?EMPTY}"
# ./script.sh: line 10: BAR: UNSET
echo "BAR is ${BAR?UNSET}"

每個錯誤的 echo 語句上面的完整示例執行需要被註釋掉以繼續。