次のように、perl スクリプトを介していくつかのシェル コマンドを実行し、出力をキャプチャしています。
$commandOutput = `cat /path/to/file | grep "some text"`;
コマンドが正常に実行されたかどうかも確認します。
if(!$commandOutput)
{
# command not run!
}
else
{
# further processing
}
これは通常機能し、出力が正しく得られます。問題は、コマンド自体が出力を生成しない場合があることです。たとえば、目的のテキストgrep
がターゲット ファイルに存在しない場合があるため、結果として出力が提供されません。この場合、私のスクリプトはこれを「コマンドが実行されていない」として検出しますが、そうではありません。
perlでこれら2つのケースを区別する正しい方法は何ですか?