为什么bash echo为退出1的Python函数打印0

为什么bash echo为退出1的Python函数打印0,python,bash,Python,Bash,使用testreturn.py中的Python函数定义为: import sys def main(): sys.exit(1) #!/bin/bash function test() { python testreturn.py echo $? } 从scrip.sh中的bash函数调用时,定义为: import sys def main(): sys.exit(1) #!/bin/bash function test() { python te

使用
testreturn.py
中的Python函数定义为:

import sys
def main():
    sys.exit(1)
#!/bin/bash
function test()
{  
   python testreturn.py
   echo $?
}
scrip.sh
中的bash函数调用时,定义为:

import sys
def main():
    sys.exit(1)
#!/bin/bash
function test()
{  
   python testreturn.py
   echo $?
}
为什么执行以下命令:

测试

印刷品

0


我希望bash函数打印python脚本的退出代码。

因为您正在定义,但从未调用
main()
函数。代码正常结束(到达文件末尾),在本例中返回代码为0。

因为python默认情况下不会调用
main
。你必须明确地称呼它

你想要:

import sys
def main():
    sys.exit(1)

if __name__ == "__main__":
    main()

您的Python脚本从不调用函数
main()
,因此
sys.exit(1)
永远不会发生,因此它只是从脚本末尾掉下来,默认情况下返回0。我不会对shell函数(或别名、脚本或…)使用名称“test”。这是一个重要的内置命令的名称,重写它可能会导致其他脚本以非常奇怪的方式失败。太简单了。谢谢你的回答。选择此选项是因为它包含解决方案的代码。