この「浮動小数点例外(コアダンプ)」エラーをどのようにリダイレクトできますか?

この「浮動小数点例外(コアダンプ)」エラーをどのようにリダイレクトできますか?

可能なエラーをリダイレクトしながら、プログラムの出力を変数名のあるファイルにリダイレクトしたいと思います。これまでのスクリプトは次のとおりです。

#!/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>同時に使用することはできませんか>

ありがとうございます。

ベストアンサー1

のようにコメント、これはアプリケーションの浮動小数点例外を報告するシェルスクリプトです。

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

おすすめ記事