我有一个bash脚本,但它给了我恼人的输出,我不想看到.当然我可以用这种方式隐藏它:
./script.sh >/dev/null 2>&1
但是我想把脚本放在"rc.local"或"cron job"中,所以如果它每隔5分钟接收一次输出,或者在启动时就会非常糟糕.如果有一种方法可以告诉整个脚本隐藏输出,那将会很棒.
如果您想重定向所有输出到/dev/null
内的脚本,可以像这样做(在这种情况下,仅执行如果环境变量重定向DEBUG
未设置):
#!/bin/bash [[ $DEBUG ]] || exec >/dev/null 2>&1 # ...continue with execution here.
您还可以检查输入是否来自TTY以检测交互式使用:
if [ -t 0 ]; then # being run by a human, be extra verbose PS4=':$LINENO+' set -x else # being run by a daemon, be outright silent exec >/dev/null 2>&1 fi
查看内置的bash-hackers页面exec
.