执行脚本时Bash忽略错误的理由是什么?

时间:2015-11-27 18:27:37

标签: bash error-handling

Bash - 也可能是其他shell - 默认情况下忽略任何错误,然后继续执行下一个命令。我想知道为什么shell是这样设计的。毕竟,通常,人们会想要中止一个脚本,其中每个命令都需要前一个生成的状态。

1 个答案:

答案 0 :(得分:1)

我不知道确切的原因,例如:
每次检查都需要额外的时间为了获得更好的性能,每次都不需要额外检查,也不会弹出“你确定[是] [否] [忽略]”。

你害怕像

这样的代码
Error   3   error C2338: unique_ptr constructed with reference to rvalue deleter    C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\memory   1382

当你没有临时目录(由普通用户制作并由root执行的脚本)时可怕!

任何拥有root权限的人都必须了解自己的责任和危险。这就是为什么你不应该执行你不信任的脚本(在你的PATH中没有当前的目录)。编写该脚本的人也是错误的。如果不对cd / ls cd $HOME/temp; rm -rf * 进行检查,则应将脚本更改为

$?

cd / && ls
cd "${HOME}"/temp && rm -rf *

这些例子不能证明错误退出会更好吗?我不瘦身。当Unix因错误退出而你没有检查所有内容时,

会出现问题
cd / && ls
if [ ${#HOME} -gt 1 ]; then
   rm -rf /"${HOME}"/temp/*
fi

当HOME设置为/或带空格的字符串(以空格...结尾)时,最后一个命令可能有效。总是三重检查您的脚本,您正在使用电源。