如果变量为空或未设置,则会出错
此语义类似于默认值替换的语义,但它不是替换默认值,而是使用提供的错误消息进行错误输出。形式是 ${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 语句上面的完整示例运行需要被注释掉以继续。