关注

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

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

案例目录结构:

.
├── [Feb  7 00:47]  do.py
├── [Feb  7 00:47]  main.py
└── [Feb  7 00:49]  run.sh

案例脚本1: do.py

# -*- coding: utf-8 -*-
# time: 2023/2/7 0:46
# file: do.py
# 公众号: 伤心的辣条


def do():
    print("Demo B start.")
    print("Demo B finish.")


if __name__ == '__main__':
    do()

案例脚本2: main.py

# -*- coding: utf-8 -*-
# time: 2023/02/07 11:26
# file: main.py
# 公众号: 伤心的辣条


def show():
    print("Demo A start.")
    raise BaseException("some reason, just like timeout.")
    print("Demo A finish.")


if __name__ == '__main__':
    show()

案例脚本3: run.sh

#!/bin/bash
python3 main.py
python3 do.py

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

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

Demo A start.
Traceback (most recent call last):
  File "main.py", line 14, in <module>
    show()
  File "main.py", line 9, in show
    raise BaseException("some reason, just like timeout.")
BaseException: some reason, just like timeout.
Demo B start.
Demo B finish.

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

#!/bin/bash
set -e
python3 main.py
python3 do.py

方案2: 增加set -o errexit

#!/bin/bash
set -o errexit
python3 main.py
python3 do.py

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

#!/bin/bash
python3 main.py &&
python3 do.py

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

Demo A start.
Traceback (most recent call last):
  File "main.py", line 14, in <module>
    show()
  File "main.py", line 9, in show
    raise BaseException("some reason, just like timeout.")
BaseException: some reason, just like timeout.

最后: 下方这份完整的软件测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取 【保证100%免费】

最后: 下方这份完整的软件测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取【保证100%免费】

在这里插入图片描述

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

转载自CSDN-专业IT技术社区

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/wx17343624830/article/details/129171435

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--