为什么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”。这是一个重要的内置命令的名称,重写它可能会导致其他脚本以非常奇怪的方式失败。太简单了。谢谢你的回答。选择此选项是因为它包含解决方案的代码。