Saindo do Shell Script de if… else

0

Eu tenho um script de shell que desejo sair com base no valor de uma variável ERROR_COUNT . Eu posso escrever

if [ ${ERROR_COUNT} -gt 0 ]
then
    echo "Exiting unsuccessfully";
    exit 1;
fi
echo "Exiting successfully";
exit;

ou

if [ ${ERROR_COUNT} -gt 0 ]
then
    echo "Exiting unsuccessfully";
    exit 1;
else
    echo "Exiting successfully";
    exit;
fi

Existe algum problema com qualquer uma das abordagens?

    
por Nitish 16.04.2018 / 14:04

1 resposta

2

Não há diferença técnica entre as duas formas de escrever os ramos em termos do que aconteceria. É uma questão de estilo e preferência pessoal.

Alguns desenvolvedores não gostam de ter uma saída incondicional na ramificação else de uma instrução if se a primeira ramificação estiver saindo.

Eu provavelmente escreveria o código como

if [ "$ERROR_COUNT" -ne 0 ]; then
    echo 'There were errors' >&2
    exit 1
fi
# echo 'No errors' >&2

Observe os pontos-e-vírgulas removidos, a expansão das variáveis citadas e o último exit removido (que está implícito no final do script. Alterei o teste para -ne 0 de -gt 0 porque está mais claro eu).

Eu também alterei a saída das duas mensagens de diagnóstico para que elas passem para o fluxo de erro padrão (e as melhorem de uma maneira que seria mais útil para o usuário). É discutível se o último echo deve estar lá, já que não há realmente nada para relatar além da execução bem-sucedida (eu comentei isso).

    
por 16.04.2018 / 14:17

Tags