通过读取文件进行 stderr 重定向

通过读取文件进行 stderr 重定向

我将文件的内容读入变量中,如下所示

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

相关内容