我希望在我的 bash 脚本中使用以下变量,但万一它为空或 null,那么处理它并退出脚本的最佳方式是什么。
tag=$1
我看到了“set -u”的答案。我知道这会起作用,但这对生产环境有用吗?
最佳答案
有一个内置运算符用于要求设置变量。如果没有,这将导致脚本退出。
tag=${1?Need a value}
通常这与 :
一起使用脚本开头附近的空操作。
: ${1?Need a value}
“未设置或空”的合并有些不同。没有类似的结构用于退出一个空但设置的值,但您可以轻松使用相关语法 ${var:-default}
扩展为 $var
如果它已设置且非空,并且 default
否则。还有${var-default}
只产生 default
如果变量被正确取消设置。
当您想要使用 set -u
时,这会特别有用但需要处理一个可能未设置的变量:
case ${var-} in '') echo "$0: Need a value in var" >&2; exit 1;; esac
我有点喜欢 case
在 if [ "${var-}" = '' ]
,主要是因为它使我不必在 ${var-}
周围加上双引号,以及 $var
中值的讨厌情况它被解释为 [
的选项并在您最意想不到的时候给您一条错误消息。 (在 Bash 中,[[
没有这些问题;但我更愿意尽可能坚持使用 POSIX shell。)
关于linux - Shell 脚本 - 如果变量为 null 或为空则退出脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31164284/