我有一个bash脚本,但它给了我恼人的输出,我不想看到.当然我可以用这种方式隐藏它:
./script.sh >/dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)
但是我想把脚本放在"rc.local"或"cron job"中,所以如果它每隔5分钟接收一次输出,或者在启动时就会非常糟糕.如果有一种方法可以告诉整个脚本隐藏输出,那将会很棒.
如果您想重定向所有输出到/dev/null 内的脚本,可以像这样做(在这种情况下,仅执行如果环境变量重定向DEBUG未设置):
#!/bin/bash
[[ $DEBUG ]] || exec >/dev/null 2>&1
# ...continue with execution here.
Run Code Online (Sandbox Code Playgroud)
您还可以检查输入是否来自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
Run Code Online (Sandbox Code Playgroud)