编者注:这个问题经过多次修改,改变了问题的性质,可能会使旧的评论和答案无效;它的原始标题是“无法将 Bash 输出重定向到 /dev/null”。
我正在尝试创建一个小型 Bash 脚本,我想为其实现静默模式。基本上我只想默认隐藏大部分输出,如果我用 运行它-v
,显示所有输出。
所以在我的脚本的开头我放了:
#!/bin/bash
declare output=''
if [ "$1" = -v ]; then
output="&1"
else
output="/dev/null"
fi
然后在我的脚本中我有:
{
# whatever commands...
} > $output 2>&1
静音模式效果很好。但是,如果我尝试详细模式,则会创建一个名为&
or的文件&1
(基于我的output
变量)。此外,该文件是空的。这不是预期的结果:我希望输出留在终端上!
这是由于我重定向的顺序还是我的变量错误?编辑:脚本现在可以完全工作,通过将"&1"
输出值替换为"/dev/tty"
.