1

私はシェルスクリプトを持っており、その中に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スクリプトは返されますが、シェルスクリプトは実行を継続します。ファイルが終了せず、Pythonスクリプトが終了した場合、シェルスクリプトもその時点で停止するようにします。

シェルスクリプトでリターンをキャプチャして、その実行をさらに停止する方法を提案してください。

4

2 に答える 2

5

exit関数からゼロ以外のものを返す必要があります。

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

エラー値はわずか8ビットであるため、整数の下位8ビットのみがシェルに返されます。負の数を指定すると、2の補数表現の下位8ビットが返されますが、これはおそらく必要なものではありません。通常、負の数は返しません。

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

これは、Pythonスクリプトがsys.exit(0)、シェルスクリプトを続行するタイミングとsys.exit(1)、停止するタイミング(またはその他のゼロ以外の値)を使用することを前提としています(エラーが発生した場合は、ゼロ以外の終了コードを返すのが通例です)。

于 2013-02-13T09:53:00.960 に答える