0

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

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

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

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

1 回答 1

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

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

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

于 2012-06-22T12:05:28.263 回答