【发布时间】:2021-05-04 16:24:37
【问题描述】:
我有一个示例 Python 文件“Test_exit.py”:
import os
def test_exit():
print('Line 1.\n')
print('Line 2.\n')
exit (17)
if __name__ == '__main__':
test_exit()
当我使用 Python 执行它时,它按预期工作:
ubuntu@ip-172-31-9-235:~$ python3 Test_exit.py
Line 1.
Line 2.
当我检查返回的错误代码时,它确实按预期打印“17”:
ubuntu@ip-172-31-9-235:~$ echo $?
17
但是,当我从 Bash 脚本“Test_exit.sh”执行相同的 Python 文件时,情况会有所不同:
#!/bin/bash
Exit_code=$(python3 Test_exit.py)
echo $Exit_code
我希望它回显“17”,但它没有:
ubuntu@ip-172-31-9-235:~$ ./Test_exit.sh
Line 1. Line 2.
不仅没有回显“17”,而且现在这两行打印出来没有换行了……
如果我将exit (17) 替换为sys.exit (17),则不会打印任何内容,甚至不会打印一行中的两行...
我的代码有什么问题? exit 不仅会导致 Python 存在,还会导致 Bash 脚本存在吗?
为什么根据调用 Python 的方式打印的字符串会有所不同?
编辑
按照@choroba 的建议,以下是运行良好的脚本:
#!/bin/bash
output=$(python3 Test_exit.py)
Exit_code=$?
echo "$Exit_code"
echo "$output"
【问题讨论】:
标签: python python-3.x bash shell exit-code