プログラムの出力を変数名のファイルにリダイレクトすると同時に、発生する可能性のあるエラーをリダイレクトしたいと思います。これまでのスクリプトは次のとおりです。
#!/bin/bash echo "Se ejecutará el PET-linux.x con PET.inp como input, debe indicarse el nombre del archivo output." echo "Nombre del archivo .out: " read outfile ./PET-linux.x < PET.inp > ${outfile}.out 2> /dev/null echo $?
エラーが発生することを認識してプログラムを実行すると、ターミナルで次のようになります。
samuel@samuel-P5Wx6:~/Documents/Fisica/19-20/Radiactividad/Prácticas/Practicas-MontCarlo/PET/pruebas$ ./ejecutarPET.sh Se ejecutará el PET-linux.x con PET.inp como input, debe indicarse el nombre del archivo output. Nombre del archivo .out: test ./ejecutarPET.sh: line 7: 25715 Floating point exception(core dumped) ./PET-linux.x < PET.inp > ${outfile}.out 2> /dev/null 136
このエラーが発生する理由はわかっていますが、そのような端末には表示されないようにしたいと思います。 2>
を>
と同時に使用することはできませんか?
ありがとうございます。
コメント
- スクリプトを実行しているシェルは、PET-linux.xプログラム自体ではなく、エラーを報告しています。リダイレクトは、PET-linux.xプログラムにのみ適用されます。 。
回答
コメント、これはアプリケーションからの浮動小数点例外を報告するシェルスクリプトです。
PET-linux.x
行を次のように変更して、例外をキャッチします。 136の戻りステータスを確認し、必要に応じてログに記録することで、例外をテストできます(レポートが不要な場合は、2行目を省略してください。方法を確認できるように含めました。必要に応じて、プログラムで浮動小数点例外を識別します。)
( trap "exit" SIGFPE; ./PET-linux.x < PET.inp > "$outfile.out" ) 2>/dev/null [[ $? -eq 136 ]] && echo "Uh oh we caught a floating point exception" >&2
コメント
- うまくいきました!どうもありがとう!