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