将python脚本中的返回值捕获到shell脚本中

将python脚本中的返回值捕获到shell脚本中,python,shell,Python,Shell,我有一个shell脚本,在其中调用python脚本say new.py: 现在这个新的.py有点像- if not os.path.exists('/tmp/filename'): print "file does not exist" sys.exit(0) 如果文件未退出,则python脚本返回,但shell脚本继续执行。如果文件不退出,而我的python脚本退出,我希望shell脚本也在该点停止 请建议如何在shell脚本中捕获return以停止其进一步执行。您需要从ex

我有一个shell脚本,在其中调用python脚本say new.py:

现在这个新的.py有点像-

if not os.path.exists('/tmp/filename'):
    print "file does not exist"
    sys.exit(0)
如果文件未退出,则python脚本返回,但shell脚本继续执行。如果文件不退出,而我的python脚本退出,我希望shell脚本也在该点停止


请建议如何在shell脚本中捕获return以停止其进一步执行。

您需要从exit函数返回非零的内容

if os.path.exists("/tmp/filename"):
    sys.exit(0)
else:
    sys.exit(1)

错误值只有8位,因此只有整数的低8位返回shell。如果您提供一个负数,那么将返回twos补码表示法的低8位,这可能不是您想要的。您通常不会返回负数。

您需要从exit函数返回除零以外的其他值

if os.path.exists("/tmp/filename"):
    sys.exit(0)
else:
    sys.exit(1)
if ! python new.py
then
  echo "Script failed"
  exit
fi
错误值只有8位,因此只有整数的低8位返回shell。如果您提供一个负数,那么将返回twos补码表示法的低8位,这可能不是您想要的。通常不会返回负数

if ! python new.py
then
  echo "Script failed"
  exit
fi
这假设Python脚本在shell脚本应该继续时使用sys.exit0,在它应该停止时使用sys.exit1或其他非零值。通常,在发生错误时返回非零退出代码


这假设Python脚本在shell脚本应该继续时使用sys.exit0,在它应该停止时使用sys.exit1或其他非零值。通常,当出现错误时,返回非零退出代码。

我现在返回sys.exit-100,但使用shell echo$?给出155…这个号码是不是为此类错误分配的?我是否可以像$?!=0然后从外壳退出您也可以执行sys.exitintnot os.path.exists/tmp/filename,如果您需要,我现在返回sys.exit-100,但在外壳echo$?给出155…这个号码是不是为此类错误分配的?我是否可以像$?!=0然后退出外壳。如果需要,还可以执行sys.exitintnot os.path.exists/tmp/filename