1

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

#!/usr/bin/ksh

python new.py

现在这new.py就像 -

if not os.path.exists('/tmp/filename'):
    print "file does not exist"
    sys.exit(0)

如果文件没有退出,则 python 脚本返回,但 shell 脚本继续执行。如果文件不退出并且我的 python 脚本退出,我希望 shell 脚本也停止。

请建议我如何捕获 shell 脚本中的返回以进一步停止其执行。

4

2 回答 2

5

您需要从退出函数返回零以外的值。

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

错误值只有8位,所以只有整数的低8位返回给shell。如果您提供负数,则将返回二进制补码表示的低 8 位,这可能不是您想要的。您通常不会返回负数。

于 2013-02-13T09:49:16.960 回答
5
if ! python new.py
then
  echo "Script failed"
  exit
fi

这假定 Python 脚本sys.exit(0)在您的 shell 脚本应该继续运行和sys.exit(1)(或其他一些非零值)它应该停止时使用(通常在发生错误时返回非零退出代码)。

于 2013-02-13T09:53:00.960 回答