我有一个 bash 脚本,它运行一个用 Fortran 90 编写的模拟程序,所有输出都重定向到一个文件。如果程序完成没有问题,我设置一个成功参数。代码看起来像这样:
#!/bin/bash ... echo -n "正在运行程序..." ./sim_program >& 文件 && 成功="true" 如果 [ $成功 ]; 然后 回声“确定” 别的 回声“不好” 菲 ...
屏幕的输出应该是“正在运行的程序...OK”或“正在运行的程序...不OK”。在某些情况下,仿真程序会因浮点异常或分段错误而崩溃,并发送相应的信号(SIGSEGV / SIGFPE)。输出可能如下所示:
:~>execute_script 运行程序.../path/to/script: line 232: 15350 Floating Point Exception ./sim_program >& file && success="true" 不好
如何抑制由于 SIGFPE 或 SIGSEGV 导致的错误输出,以便我得到
:~>execute_script 运行程序...不行
即使有这样的错误?我已经研究过使用陷阱,例如
陷阱 "" SIGSEGV SIGFPE ./sim_program >& 文件 && 成功="true" 陷阱 SIGSEGB SIGFPE
但后来我仍然得到类似的东西
:~>execute_script 运行程序...浮点异常 不好
任何帮助表示赞赏!