我有一个有多个阶段的脚本,并且在每个阶段都可能失败,但脚本可以继续运行。
具体来说,我生成了一些json,并检查diff是否正确。差异可能是错误的,但它并没有停止生产json的下一阶段。
如何聚合diff的失败代码,以便在返回任何差异时返回1> 1,否则为0,一旦发生故障就不会结束?
基本上,它只是将||
折叠到结果代码上,但我似乎找不到一个很好的方法来||
一个带有返回码的字符串。
骨架:
main_result=0
for s in stage1 stage2 stage3; do
diff <(generate-stuff) expected-$stage
result=$?
# something like main_result=$main_result || $result
done
exit $main_result
答案 0 :(得分:2)
逻辑或可以完成:
main_result=$((main_result || result))
答案 1 :(得分:2)
您要找的是$(())
,其解释为here:
#!/bin/sh
main_result=0
main_result=$((main_result || 0))
echo $main_result
main_result=$((main_result || 1))
main_result=$((main_result || 0))
echo $main_result
结果:
0
1
所以你需要做的就是
main_result=$((main_result || $?))