我想将程序的输出重定向到具有变量名的文件,同时重定向可能的错误。这是到目前为止的脚本:
#!/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
正如在评论,它是您的 shell 脚本,报告应用程序中的浮点异常。
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