이 "부동 소수점 예외(코어 덤프)" 오류를 어떻게 리디렉션할 수 있나요?

이 "부동 소수점 예외(코어 덤프)" 오류를 어떻게 리디렉션할 수 있나요?

가능한 오류를 리디렉션하는 동안 프로그램의 출력을 변수 이름이 있는 파일로 리디렉션하고 싶습니다. 지금까지의 스크립트는 다음과 같습니다.

#!/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의 반환 상태를 확인하고 필요한 경우 기록하여 예외를 테스트할 수 있습니다. (보고서가 필요하지 않은 경우 두 번째 줄을 생략하면 됩니다. 필요한 경우 부동 소수점 예외를 프로그래밍 방식으로 식별하는 방법을 확인할 수 있도록 포함시켰습니다.)

( 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

관련 정보