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 相当安全。
我对 bash 如何处理 shell 命令中使用的未设置变量的行为感到困惑,如下所示:
rm -rf /$TO_BE_REMOVED
如果我没有定义变量会怎样TO_BE_REMOVED
。
如果你这样做,执行的命令将有效地尝试删除 /
,这是非常非常糟糕的。我的意思是,它可能大部分都会失败(除非你是 运行 root),但它仍然会非常糟糕。
您可以通过一个简单的命令自动避免 Bash 中的许多此类错误:
set -eu
如果你把它放在你的 Bash 脚本的顶部,如果你的脚本调用了一个 return 错误的命令,解释器将停止并且 return 一个错误代码未检查(即 -e
部分),或者它是否使用未定义的变量(-u
部分)。这使得 Bash 相当安全。