bash 将如何处理未设置的变量

what will bash do with an unset variable

我对 bash 如何处理 shell 命令中使用的未设置变量的行为感到困惑,如下所示:

rm -rf /$TO_BE_REMOVED

如果我没有定义变量会怎样TO_BE_REMOVED

如果你这样做,执行的命令将有效地尝试删除 /,这是非常非常糟糕的。我的意思是,它可能大部分都会失败(除非你是 运行 root),但它仍然会非常糟糕。

您可以通过一个简单的命令自动避免 Bash 中的许多此类错误:

set -eu

如果你把它放在你的 Bash 脚本的顶部,如果你的脚本调用了一个 return 错误的命令,解释器将停止并且 return 一个错误代码未检查(即 -e 部分),或者它是否使用未定义的变量(-u 部分)。这使得 Bash 相当安全。