出力リダイレクトにより空のファイルが生成される

出力リダイレクトにより空のファイルが生成される

編集したくないシェルスクリプトがありますが、その出力を使用する必要があります。シェルに./SomeScript.sh -d必要な出力を表示します。

ただし、出力をリダイレクトしようとすると空のファイルが表示されます。

./SomeScript.sh -d > temp 
cat temp

検査後出力をリダイレクトすると、時々空のファイルが生成されるのはなぜですか?、私も試しましたが、echo $(./SomeScript.sh -d)コマンドは何も印刷しません。

grep最初は出力から1行を取得しようとしましたが、何も返されなかったことに気づき、出力をファイルにリダイレクトしようとすると問題に気づきました。なぜこれが起こるのかご存知ですか?

ベストアンサー1

結果が空のファイルの場合./SomeScript.sh -d > temp(ただし、画面に出力が表示される場合)、プログラムがstoutの代わりにstderrとして印刷していることを意味します。したがって、stderrもリダイレクトしてみてください。つまり、次を使用します。

./SomeScript.sh -d >temp 2>&1

あるいは、出力を2つの別々のファイルに送信することもできます。

./myScript  1>outtemp 2>errtemp 

おすすめ記事