stashr在bash脚本中的临时重定向

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).

任何帮助都会得到满足!

Mag*_*iie 8

另一种选择是:

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可以单独重定向.