Por que os redirecionamentos não funcionam após a atribuição?

0

./NulFile contém NUL. Quando a expansão do comando remove o NUL, ele envia avisos. Existe alguma maneira de suprimir os avisos?

Por que os redirecionamentos não estão funcionando?

$ filecontent="$(cat ./NulFile)" 1>/dev/null 2>&1
bash: warning: command substitution: ignored null byte in input
    
por Ben 21.11.2018 / 15:00

1 resposta

2

Coloque em um grupo de comando e redirecione a saída do grupo:

$ foo=$(cat /bin/sleep)
bash: warning: command substitution: ignored null byte in input
$ { foo=$(cat /bin/sleep); } 2>/dev/null
$

Como { ...; } não é uma subshell, a variável ainda estará disponível.

$ echo ${#foo}
19786

O aviso é do shell e você precisa redirecionar a saída do shell para que ele funcione. No grupo, até mesmo a saída do shell é redirecionada (somente dentro desse grupo).

    
por 21.11.2018 / 15:08