【发布时间】:2021-08-09 15:19:30
【问题描述】:
您好,我正在努力从 bash 脚本中调用的脚本中获取 python 返回代码。见如下:
toto.py:
if __name__ == "__main__":
OK = myTest()
if(OK):
print("Test was successful. Error code: 0")
sys.exit(0)
else:
print("Test failed. Error code: 1")
sys.exit(1)
在 test.sh 中:
python toto.py
echo "After calling toto.py"
如果我的 python 脚本返回 sys.exit(0),bash 脚本会继续并打印“在调用 toto.py 之后”。但是,如果我的 python 脚本以 sys.exit(1) 结束,则 bash 脚本将结束并且不会继续。我可以在控制台中看到通过调用 echo $? 返回正确的退出代码并打印 1。
我没想到 python sys.exit() 函数也会退出我的 bash 脚本。
那么我应该使用“return”关键字吗?
【问题讨论】:
-
无法重现,
echo始终显示。正如预期的那样。 -
如果在测试脚本的开头加上“set +e”会发生什么?
-
是的,我刚刚想通了,脚本以 set -e 开头。删除它或通过 set +e 替换它解决了问题。谢谢