当我刚开始学习Shell脚本时,我使用了很多短测试代替if
语句,比如false && true
。
后来我学会了使用set -e
,但发现我的脚本因某些原因而崩溃,如果我将短测试替换为完整的if
语句,则可以运行。现在,时间过去了,我仍然只使用完整的if
语句。
最有趣的是,如果我打开一个交互式shell并执行以下操作:
set -e
false && true
echo $?
它返回1但shell未中止!
我发现我浪费了太多的代码行。有人可以向我解释如何安全地使用set -e
进行简短测试,例如:不让脚本死掉吗?
rm -f
的存在。 - Danilo Piazzalunga1
导致父进程退出了。在这种情况下,使用if
或||:
更加安全。 - admirabilisfalse && true
是一个AND列表,并且不会使shell死亡,而( false && true )
被(外部) shell视为单个命令。括号确实有所不同。 - Danilo Piazzalunga