Estou fazendo alguns exercícios práticos.
Escreva um script que receberá um número de mês como argumento e traduza esse número para o nome de um mês. O resultado será impresso em stdout.
Eu fiz uma solução:
#test for number of argument
if [ "$#" -eq 0 ] ;
then
echo -e "No argument."
echo -e "Write a number between 1 and 12."
exit 1
elif [ "$#" -gt 1 ] ;
then
echo -e "More than 1 argument."
echo -e "Write a number between 1 and 12."
exit 1
else
numb=$1
case "$numb" in
1) echo "Month: January";;
2) echo "Month: February";;
3) echo "Month: March";;
4) echo "Month: April";;
5) echo "Month: May";;
6) echo "Month: June";;
7) echo "Month: July";;
8) echo "Month: August";;
9) echo "Month: September";;
10) echo "Month: October";;
11) echo "Month: November";;
12) echo "Month: December";;
*) echo -e "You wrote a wrong number. Try again with writing number between 1 and 12.";;
esac
fi
exit 2
exit 0
O que significa exit 1, exit 0
e exit 2
significa, e por que os usamos?
Respostas:
Aqui está uma boa referência para códigos de saída do shell :
Advertência: Usar o código de saída adequado não é um requisito e não é imposto pelo shell. Os desenvolvedores podem ignorar a orientação, se acharem sábio.
fonte
Usar
exit
e um número é uma maneira útil de sinalizar o resultado do seu script. Ele imita a maneira como os comandos bash produzem um código de retorno. Com os comandos bash, o código de retorno 0 geralmente significa que tudo foi executado com êxito, sem erros.exit
também faz com que seu script pare a execução nesse ponto e retorne à linha de comando.Qualquer código de retorno maior que 0 indica algum tipo de erro, embora às vezes o erro não seja crítico, para cada comando deve ser possível encontrar alguma documentação que informe o que significa cada código de retorno.
Você pode obter o código de retorno do último comando bash usando a variável shell da seguinte
$?
maneira:Quando você usa isso em um script, pode consultar o código de retorno da mesma maneira quando terminar de executar. Então você verá que tendo:
É meio sem sentido, pois você nunca pode alcançar a
exit 0
parte.fonte
Por si só,
exit
implica um valor de saída zero ou conclusão bem-sucedida do seu script. Você não precisa adicionar o argumento zero ao comando exit para indicar a conclusão bem-sucedida. Seu script pode (ou provavelmente sairá) com êxito, embora teste uma condição incorreta. Nesse caso, você deseja especificamente que saia com a condição de erro (ou 1).O
exit
comando na última linha não precisa estar lá. Pode ser chamado com o zero ou não chamado. Sem especificar o argumento 1 para o comando exit, a resposta em todos esses casos para oecho $?
seria zero.No entanto, especificando o argumento 1 para o comando exit, a resposta para
echo $?
seria 1. Portanto, use o argumento 1 para o comando exit quando desejar especificar que o script foi encerrado com uma condição de erro.fonte