私はPythonで書かれたフレームワークを持っており、テスト目的で基本的にサブプロセス(シェル呼び出しとも呼ばれます)を実行したい...それは単にRC!= 0で戻ってくるはずです。または「exit 1」を実行します。しかし、それらは何らかの理由でFileNotFoundErrorに変換されます。
したがって、リターンコード!= 0をトリガーするために他に何ができますか(「信頼できる」方法で。コマンドが将来の時点で突然0を返すべきではないことを意味します)。
Exitと呼ばれるバイナリを「検索」したいと思っていましたが、
> /usr/bin/env exit
/usr/bin/env: exit: No such file or directory
常にゼロ以外の終了コードを返すsystemコマンドを探している場合は、/bin/false
が機能するはずです。 man false
から:
NAME
false - do nothing, unsuccessfully
SYNOPSIS
false [ignored command line arguments]
false OPTION
DESCRIPTION
Exit with a status code indicating failure.
コマンドbash -c "exit RETURNCODE"
を使用して新しいリターンコードを作成し、「RETURNCODE」を任意の番号に置き換えることができます。 (RETURNCODE mod 256)によって8ビット符号なし整数(0 ... 255)にトリミングされることに注意してください。
echo $?
を実行すると、最後のシェルコマンドの戻りコードを確認できます端末内(!)。 「$?」変数には最新の戻りコードが含まれ、「echo」はそれを標準出力に出力します。
さらにテストを重ねた結果、問題が「Linux」側にないことがわかりました。
Pythonにはモジュールshlexがあります。コマンド文字列を「分割」するために使用する必要があります。 「bash exit 1」を呼び出すshlex.split()
の出力を使用するようにサブプロセス呼び出しを変更すると、必要なものが得られます。