可能是一个简单的问题,但不会想到一个优雅的解决方案。我想运行一系列命令(每个命令都是一个测试)并返回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
是否有一些简单,优雅的方式来获得我想要的东西?
答案 0 :(得分:15)
这够优雅吗?
status=0
thingA || status=1
thingB || status=1
thingC || status=1
exit $status
如果您愿意,可以使用$?
代替1
。或者,您可以在执行分配时使用状态1,2,3识别失败的最后一个命令。如果您想知道第一个失败的命令,那么在分配之前您必须先测试$status
。