redirecionamento stderr lendo um arquivo [duplicado]

2

Eu li o conteúdo do arquivo em uma variável como esta

var=$(<somefile)

Mas, se o arquivo não existir, recebo uma mensagem de erro

bash: somefile: No such file or directory

É possível redirecionar o stderr para > / dev / null sem usar o comando cat?

    
por renton 14.03.2018 / 09:37

2 respostas

4

Nesse caso, use cat :

var=$( cat somefile 2>/dev/null )

ou teste a existência do arquivo primeiro:

if [ -f somefile ]; then
    var=$(<somefile)
fi

Para evitar a condição de corrida no último exemplo (o arquivo pode, teoricamente, desaparecer entre o teste e lê-lo):

if cp somefile myname 2>/dev/null; then
    var=$(<myname)
    rm -f myname
fi

O seguinte não funcionará:

var=$(<somefile) 2>/dev/null
var=$(<somefile 2>/dev/null)
    
por 14.03.2018 / 09:48
2

Você pode usar:

{ var=$(<somefile); } 2> /dev/null
    
por 14.03.2018 / 11:22