我有一个简单的脚本,用于启动另一个程序.这个其他程序有时会产生一个SIGSEGV
,这会破坏我的输出.因此,我添加了几行,这些行应该暂时重定向stderr
到/dev/null
,以便SIGSEGV
忽略它.以下是我的代码草稿:
exec 2> /dev/null progname >& ./tmp/run.txt && run_status='OK' exec 2>1
问题是最后一行不能满足我的要求.第一行显然有效,并重定向stderr
.最后一行应该返回stderr
到之前的位置(我只假设它是相同的stdout
).
任何帮助都会得到满足!
另一种选择是:
exec 3> /dev/stderr 2> /dev/null progname >& ./tmp/run.txt && run_status='OK' exec 2>&3
甚至
exec 3>&2 2> /dev/null progname >& ./tmp/run.txt && run_status='OK' exec 2>&3
这样,脚本保留了脚本的stdout和stderr的分离(即脚本stdout和stderr可以单独重定向.