考虑以下(有点傻)脚本名称“test1.sh”:
#/bin/bash
#
sleep 10 &
echo sleep pid = $!
pkill sleep
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我不仅得到了 echo 的输出,还得到了 bash 在 stderr 上报告睡眠死亡的报告:
$ ./test1.sh
sleep pid = 3551
./test1.sh: line 5: 3551 Terminated sleep 10
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我想抑制打印输出到 stderr。我知道我可以在命令行上完成,如下所示:
$ ./test1.sh 2> /dev/null
Run Code Online (Sandbox Code Playgroud)
......但有没有办法从抑制其内的脚本?(我知道我可以将它包装在第二个脚本中并让包装器重定向它,但一定有更简单的东西......)
我运行了一个可执行文件 bash
./code > log
Run Code Online (Sandbox Code Playgroud)
它在终端上偶尔显示错误消息,而所有 printf 语句都进入日志文件。我像下面一样重新运行它
./code >& log
Run Code Online (Sandbox Code Playgroud)
现在,偶尔的错误消息也会进入日志。但是如果出现分段错误,它仍然显示在终端上。为什么?如何使消息Segmentation fault (core dumped)进入日志文件?
用户 $ bash --version
GNU bash,版本 4.2.24(1)-release (i686-pc-linux-gnu)