Erro do comando de redirecionamento para variável na instrução if

0

Estou criando um script e precisaria redirecionar o erro de um comando dentro de uma instrução if.

ERROR=""

if tar -xf $1 -C $2/$DIR_NAME 2> $ERROR;
then
    echo "Done"
else
    rm -rf $2/$DIR_NAME
    echo "Errors during execution:"
    echo $ERROR
fi

Então, basicamente, eu gostaria de imprimir os erros que o comando tar poderia acionar somente após o echo "Errors during execution:" . Quando executo o script, recebo um erro line 20: $ERROR: ambiguous redirect .

Como posso conseguir isso?

    
por ste 13.03.2018 / 17:45

1 resposta

1

Você não pode redirecionar o texto para uma variável, você precisa capturá-lo. Mas você quer manter o texto stderr mas não stdout:

if error=$( tar -xf "$1" -C "$2/$dir_name" 2>&1 1>/dev/null ); then ...

if atuará no status de saída do tar.

Desconte o hábito de usar ALL_CAPS_VARNAMES.

    
por 13.03.2018 / 17:54

Tags