paulo1205
(usa Ubuntu)
Enviado em 06/10/2015 - 16:43h
Depende do caso. Vocẽ pode colocar a continuação do script dentro de um bloco
else ...
fi , como sugerido acima, ou pode simplesmente executar o comando
exit dentro do bloco iniciado por
then .
Qual é melhor? Como eu disse, depende do caso. Se você pretende invocar seu script por meio do comando
source ou “
. ”, você dificilmente vai querer usar
exit . Por outro lado, se você garantir que não vai fazer
source ou se, mesmo fazendo, entende que o script deve garantir que vai sair naquele ponto, o
exit é muito conveniente.
Construções como essa que eu mostre são comuns para tratamento de erro, especialmente para evitar o que é às vezes chamado de programa diagonal, quando a execução de uma determinada tarefa depende de muitas condições. Compare as duas formas.
# Versão "diagonal"
if (( condição 1 )); then
if (( condição 2 )); then
if (( condição 3 )); then
if (( condição 4 )); then
comando
comando
comando
comando
cod_retorno=0 # Zero indica sucesso para o shell
else
echo "Erro condição 4" >&2
cod_retorno=4
fi
else
echo "Erro condição 3" >&2
cod_retorno=3
fi
else
echo "Erro condição 2" >&2
cod_retorno=2
fi
else
echo "Erro condição 1" >&2
cod_retorno=1
fi
exit $cod_retorno
# Versão direta
if ! (( condição 1 )); then
echo "Erro condição 1" >&2
exit 1
fi
if ! (( condição 2 )); then
echo "Erro condição 2" >&2
exit 2
fi
if ! (( condição 3 )); then
echo "Erro condição 3" >&2
exit 3
fi
if ! (( condição 4 )); then
echo "Erro condição 4" >&2
exit 4
fi
comando
comando
comando
comando
exit 0 # Zero indica sucesso para o shell