我知道set -u
如果引用了任何未绑定的变量,脚本将会失败,但是在我的 bash 脚本中,我正在检查某个变量是否在 if 语句中未设置,然后再尝试对其进行操作,如下所示:
if [[ -z "${SOME_VARIABLE}" ]] ; then
echo '$SOME_VARIABLE' is not set
else
do_stuff_with_SOME_VARIABLE
fi
但是,如果我尝试set -eu
在我的序曲中运行上述内容,我会收到以下错误,考虑到我正在尝试做的事情,这似乎有点违反直觉:
-bash: SOME_VARIABLE: unbound variable
[Process completed]
如您所见,我实际上并没有尝试在未$SOME_VARIABLE
设置时使用,所以我想知道的是,当我实际尝试使用未设置的变量时(例如将它们传递为参数或对其应用字符串操作)但不是当我只是检查它们是否未设置时?