Iは、次のPerlスクリプト(test.pl
)を有する:Pythonの実行から終了コード(test.py
)キャプチャしようとしているなぜPerlのsystem()の結果がスクリプトの終了コードではないのですか?
my $exit_code = system('./test.py');
print $exit_code."\n";
:
#!/bin/env python
import sys
sys.exit(2)
直接実行Pythonの実行に戻り2を、その
> ./test.py
> echo $?
2
しかし、実行中のPerlは別のものを返します:
> perl test.pl
512
なぜ、PerlはPythonとは異なる終了コードを取得したのですか?
'512' *を終了コードにすることはできません。終了コードは1バイトであり、値が大きすぎて収まりません。 –
@CharlesDuffy:Perlの 'system()'は、かなり面白い終了コードを返します。実際の値を取得するには、右に8を移動する必要があります。したがって、512は実際には2を意味する有効な戻り値です: -/ –
@DaveCross、yes、既に存在することを指定する答え。私のポイントは、perlがキャプチャしていたのは、明らかに文字通りの終了コードではないということでした。 –