bash中的聚合故障代码
我有一个脚本,它有多个阶段,每个阶段都可能失败,但脚本可以继续运行 具体地说,我生成一些json,并检查差异是否正确。差异可能是错误的,但它并没有阻止json的下一阶段的产生 如何聚合diff的故障代码,以便在任何diff返回>1时返回1,否则返回零,而不在故障发生时立即结束 基本上,它只是将bash中的聚合故障代码,bash,Bash,我有一个脚本,它有多个阶段,每个阶段都可能失败,但脚本可以继续运行 具体地说,我生成一些json,并检查差异是否正确。差异可能是错误的,但它并没有阻止json的下一阶段的产生 如何聚合diff的故障代码,以便在任何diff返回>1时返回1,否则返回零,而不在故障发生时立即结束 基本上,它只是将|折叠到结果代码上,但我似乎找不到一个好方法来|带有返回代码的字符串 骨架: main_result=0 for s in stage1 stage2 stage3; do diff <(ge
|
折叠到结果代码上,但我似乎找不到一个好方法来|
带有返回代码的字符串
骨架:
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
main\u结果=0
对于阶段1阶段2阶段3中的s;做
diff逻辑or可按以下方式执行:
main_result=$((main_result || result))
逻辑or可以按以下方式执行:
main_result=$((main_result || result))
您要查找的是$(())
,说明如下:
结果:
0
1
所以你需要做的就是
main_result=$((main_result || $?))
您要查找的是$(())
,说明如下:
结果:
0
1
所以你需要做的就是
main_result=$((main_result || $?))
你的意思是diff returned>1
还是等于1?@anubhava我的意思是>1
。从手册页上看,如果输入相同,退出状态为0;如果输入不同,退出状态为1;如果输入有问题,退出状态为2。
这会使问题变得更加复杂。只要将main_result
设置为1,如果生成的文件之一不是您所期望的:diff您真的是说diff returned>1
还是等于1?@anubhava我真的是说>1
。从手册页上看,如果输入相同,退出状态为0;如果输入不同,退出状态为1;如果输入有问题,退出状态为2。
这会使问题变得更加复杂。只要将main\u result
设置为1,如果生成的文件之一不是您所期望的:diff