编辑注:这个问题经历了几次修改,改变了问题的性质,可能会使旧的评论和答案无效;它的原始标题是“无法将Bash输出重定向到/dev/null”。
我正在尝试创建一个小型的Bash脚本,并且我想实现一个静默模式。基本上,我只想默认隐藏大多数输出,并在使用
因此,在我的脚本开头,我放置了以下代码:
然后在我的脚本中,我有以下内容:
我正在尝试创建一个小型的Bash脚本,并且我想实现一个静默模式。基本上,我只想默认隐藏大多数输出,并在使用
-v
运行时显示所有输出。因此,在我的脚本开头,我放置了以下代码:
#!/bin/bash
declare output=''
if [ "$1" = -v ]; then
output="&1"
else
output="/dev/null"
fi
然后在我的脚本中,我有以下内容:
{
# whatever commands...
} > $output 2>&1
静默模式很好用。然而,如果我尝试冗长模式,就会生成一个名为 &
或 &1
(取决于我的 output
变量)的文件。此外,该文件为空。这不是期望的结果:我希望输出保留在终端上!
这是因为我重定向的顺序有误还是我的变量有问题?编辑:通过将 "&1"
替换为 "/dev/tty"
,脚本现在完全可行。