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