你如何禁止终止的消息,在你杀了一个
进程在bash脚本?
进程在bash脚本?
我尝试设置bm,但这不工作。
我知道另一个解决方案涉及调用exec 2> / dev / null,但是
可靠?如何重置它,以便我可以继续看到stderr?
简短的答案是,你不能。 Bash总是打印前台作业的状态。监视标志仅适用于后台作业,并且仅适用于交互式shell,而不适用于脚本。
原文链接:https://www.f2er.com/bash/389973.html请参阅jobs.c中的notify_of_job_status()。
正如你所说,你可以重定向,因此标准错误指向/ dev / null,但然后你错过任何其他错误消息。您可以通过在运行脚本的subshell中执行重定向来使其临时。这留下原来的环境。
(script 2> /dev/null)
这将丢失所有错误消息,但只是从该脚本,而不是从任何其他运行在该shell。
您可以保存和恢复标准错误,通过重定向一个新的文件描述符指向那里:
exec 3>&2 # 3 is now a copy of 2 exec 2> /dev/null # 2 now points to /dev/null script # run script with redirected stderr exec 2>&3 # restore stderr to saved exec 3>&- # close saved version
但是我不推荐这样做 – 第一个的唯一的好处是,它保存一个子shell调用,而更复杂,甚至可能更改脚本的行为,如果脚本更改文件描述符。