Bash - 也可能是其他shell - 默认情况下忽略任何错误,然后继续执行下一个命令。我想知道为什么shell是这样设计的。毕竟,通常,人们会想要中止一个脚本,其中每个命令都需要前一个生成的状态。
答案 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设置为/或带空格的字符串(以空格...结尾)时,最后一个命令可能有效。总是三重检查您的脚本,您正在使用电源。