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

时间:2009-01-15 15:13:21

标签: bash segmentation-fault redirect stdin stderr

我有一个简单的脚本,用于启动另一个程序。这个其他程序有时会产生SIGSEGV,这会中断我的输出。因此,我添加了几行,这些行应该暂时将stderr重定向到/dev/null,以便忽略SIGSEGV。以下是我的代码草稿:

exec 2> /dev/null
progname >& ./tmp/run.txt && run_status='OK'
exec 2>1

问题是最后一行没有按我的意愿行事。第一行显然有效,并重定向stderr。最后一行应该将stderr返回到之前的位置(我只假设它与stdout相同)。

任何帮助都会得到满足!

2 个答案:

答案 0 :(得分:8)

另一种选择是:

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

答案 1 :(得分:0)

为什么不直接重定向它以进行预测运行?

   progname > ./tmp/run.txt 2>/dev/null && run_status='OK'

或者可能

{
   progname > ./tmp/run.txt && run_status='OK'
} 2>/dev/null