shell:脚本执行失败就退出的3种方案

简介: 在日常的自动化测试中,尤其shell脚本,在针对需要多个程序运行,shell脚本顺序执行过程可能会有中间环节会运行失败,抛出异常停止运行并报错,然而shell的其他下方语句仍然会继续往下执行,有时需要规避这类问题,使得出错后就退出后面的执行。

案例目录结构:

  1. .

  2. ├── [Feb 7 00:47] do.py

  3. ├── [Feb 7 00:47] main.py

  4. └── [Feb 7 00:49] run.sh

案例脚本1: do.py

  1. # -*- coding: utf-8 -*-

  2. # time: 2023/2/7 0:46

  3. # file: do.py

  4. # 公众号: 咖啡加剁椒

  5. def do():

  6. print("Demo B start.")

  7. print("Demo B finish.")

  8. if __name__ == '__main__':

  9. do()

案例脚本2: main.py

  1. # -*- coding: utf-8 -*-

  2. # time: 2023/02/07 11:26

  3. # file: main.py

  4. # 公众号: 咖啡加剁椒

  5. def show():

  6. print("Demo A start.")

  7. raise BaseException("some reason, just like timeout.")

  8. print("Demo A finish.")

  9. if __name__ == '__main__':

  10. show()

案例脚本3: run.sh

  1. #!/bin/bash

  2. python3 main.py

  3. python3 do.py

常规情况下运行: bash run.sh

执行结果: 可以看到执行main.py后,哪怕遇到报错,程序非正常退出,依然执行了do.py,这不符合我们的需求。

  1. Demo A start.

  2. Traceback (most recent call last):

  3. File "main.py", line 14, in <module>

  4. show()

  5. File "main.py", line 9, in show

  6. raise BaseException("some reason, just like timeout.")

  7. BaseException: some reason, just like timeout.

  8. Demo B start.

  9. Demo B finish.

方案1: 增加set -e,推荐

  1. #!/bin/bash

  2. set -e

  3. python3 main.py

  4. python3 do.py

方案2: 增加set -o errexit

  1. #!/bin/bash

  2. set -o errexit

  3. python3 main.py

  4. python3 do.py

方案3: 逻辑与。&&连接的命令会按照顺序从前向后执行

  1. #!/bin/bash

  2. python3 main.py &&

  3. python3 do.py

运行结果:改造后,只运行main.py,而不会进行往下运行do.py

  1. Demo A start.

  2. Traceback (most recent call last):

  3. File "main.py", line 14, in <module>

  4. show()

  5. File "main.py", line 9, in show

  6. raise BaseException("some reason, just like timeout.")

  7. BaseException: some reason, just like timeout.

行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群: 320231853,里面有各种软件测试+开发资料和技术可以一起交流学习哦。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值