我将文件的内容读入变量中,如下所示
var=$(<somefile)
但如果该文件不存在,我会收到相应的错误消息
bash: somefile: No such file or directory
是否可以在不使用 cat 命令的情况下将 stderr 重定向到 >/dev/null ?
答案1
在这种情况下,可以使用cat
:
var=$( cat somefile 2>/dev/null )
或首先测试文件是否存在:
if [ -f somefile ]; then
var=$(<somefile)
fi
为了避免上一个示例中的竞争条件(理论上该文件可能会在测试和读取之间消失):
if cp somefile myname 2>/dev/null; then
var=$(<myname)
rm -f myname
fi
以下内容将不起作用:
var=$(<somefile) 2>/dev/null
var=$(<somefile 2>/dev/null)
答案2
您可以使用:
{ var=$(<somefile); } 2> /dev/null