可能是一个简单的问题,但优雅的解决方案不会浮现在脑海中.我想运行一系列命令(每个命令都是一个测试),如果其中任何一个返回非零,则返回1.通常我会这样做:
thingA && thingB && thingC
exit $?
但是,如果thingB失败,那将不会运行thingC,我想确保所有3运行.我可以很容易地想到一种不优雅的方法:
final_result=0
retval=thingA
if [[ $retval != 0 ]] then
  final_result=1
fi
retval=thingB
...
exit $final_result
是否有一些简单,优雅的方式来获得我想要的东西?
Jon*_*ler 15
这够优雅吗?
status=0
thingA || status=1
thingB || status=1
thingC || status=1
exit $status
如果您愿意,可以使用$?而不是1.或者,您可以在执行分配时使用状态1,2,3识别失败的最后一个命令.如果您想知道第一个失败的命令,则必须$status在分配之前进行测试.