linux中shell脚本可以这样写判断逻辑吗?

小弟初学linux及Shell脚本,有一个调度逻辑需要判断三个sql的执行情况,分别在每个sql执行后记录一个状态变量,最后用一个条件语句判断是否全部执行成功,如下所示:

if [ $stage1|$stage2|$stage3 == 0 ];then
    echo "success."

else
    echo "failed"

fi

按照我的想法,执行成功后stage的值应为0,有一个失败的话应不为0,所以这里对三个状态取了“或”,但执行时提示:

图片说明
显示失败,没有想明白是什么原因

2个回答

思路没问题,但是判断语法错误了,Linux 的逻辑判断或是 ||
demo 语法参考:
图片说明

wojiushiwo945you
毕小宝 回复Rischaos: 这是我写的测试脚本,这里的变量是数值类型,用的判断条件是 -eq 0 如果你的执行结果是字符串,换成 == "0"
6 个月之前 回复
Rischaos
Rischaos 大神,我把这三个状态值分别输出了,的确都是0,但我用if [ $stage1||$stage2||$stage3 == 0 ]还是报错了,走到fail的分支
6 个月之前 回复
Rischaos
Rischaos 我改成了这样:if [ $stage1||$stage2||$stage3 == 0 ];then... ,但还是报相同的错误,┭┮﹏┭┮
6 个月之前 回复

你用 或 那就是有一个为0 条件就为真,你这里要用逻辑与 if [ $stage1==0 ] && [ $stage2==0 ] && [ $stage==0 ]
或者你直接 $[stage1+stage2+stage3] 这个值为0,就是都执行成功,否则,执行失败

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问