目前我正在使用这样的命令
$ teststring=$(cat foo.txt 2>/dev/null)
无论文件是否存在,这都没有输出,就像我想要的那样。如果文件不存在,以下命令似乎没有办法抑制输出。
$ teststring=$(<foo.txt)
bash: foo.txt: No such file or directory
目前我正在使用这样的命令
$ teststring=$(cat foo.txt 2>/dev/null)
无论文件是否存在,这都没有输出,就像我想要的那样。如果文件不存在,以下命令似乎没有办法抑制输出。
$ teststring=$(<foo.txt)
bash: foo.txt: No such file or directory
{ teststring=$(<foo.txt); } 2>/dev/null
简单的解释是在重定向之前执行扩展。
技术解释是 Bash 的重定向/分配顺序存在规范违规。这种特殊情况是一个允许的例外,但这并不是所有 shell 中的问题,并且行为可能会因上下文而异。无论如何,上述解决方法应该始终有效。