Bash压制内置输出?

时间:2012-06-22 11:42:46

标签: bash stderr io-redirection

目前我正在使用这样的命令

$ teststring=$(cat foo.txt 2>/dev/null)

无论文件是否存在,都有无输出,就像我想要的那样。如果文件不存在,以下命令似乎没有办法禁止输出

$ teststring=$(<foo.txt)
bash: foo.txt: No such file or directory

1 个答案:

答案 0 :(得分:2)

{ teststring=$(<foo.txt); } 2>/dev/null

简单的解释是在重定向之前执行扩展。

技术解释是Bash的重定向/分配顺序存在spec违规。这种特殊情况是允许的异常,但这不是所有shell中的问题,并且行为可能因上下文而异。无论如何,上述解决方法应始终有效。