O comando interno exit
sai do shell (de Referência de Bash ):
exit [n]
Exit the shell, returning a status of n to the shell’s parent. If n is omitted, the exit status is that of the last command executed. Any trap on EXIT is executed before the shell terminates.
A execução até o final do arquivo também sai, retornando o código de retorno do último comando, portanto, sim, um% final exit 0
fará o script sair com status bem-sucedido, independentemente do status de saída dos comandos anteriores. (Ou seja, assumindo que o script atinja o% final% co_de.) No final de um script, você também pode usar exit
ou true
para obter um código de saída igual a zero.
É claro que você usaria com mais frequência :
de dentro de um exit
para finalizar o script no meio.
Estes devem imprimir um 1 ( if
contém o código de saída retornado pelo comando anterior):
sh -c "false" ; echo $?
sh -c "false; exit" ; echo $?
Enquanto isso deve imprimir um 0:
sh -c "false; exit 0" ; echo $?
Não tenho certeza se o conceito do script "falhando" ao executar um $?
faz sentido, já que é bem possível que alguns comandos executados pelo script falhem, mas o próprio script seja bem-sucedido. Cabe ao autor do roteiro decidir o que é um sucesso e o que não é.
Além disso, o intervalo padrão para códigos de saída é 0..255. Códigos acima de 127 são usados pelo shell para indicar um processo terminado por um sinal, mas eles podem ser retornados da maneira usual. A chamada do sistema exit
na verdade retorna um valor mais amplo, com o restante contendo bits de status definidos pelo sistema operacional.