Bash sair em caso de erro
Um código de status de saída é retornado quando qualquer comando do Linux é executado a partir do terminal, seja o comando bem-sucedido ou malsucedido. Esse código de status pode ser usado para mostrar a mensagem de erro para execução malsucedida ou executar qualquer tarefa específica usando script de shell. O código de status de saída sempre representa um número. O valor deste código é 0 para a execução bem-sucedida de qualquer comando do Linux e retorna qualquer número de 1 a 255 para a execução malsucedida do comando. Como o código de status existente pode ser usado no terminal e no script bash é mostrado neste tutorial.
Alguns códigos de status de erro comuns são mencionados abaixo.
Code | Description | Comments |
0 | It indicates successful execution. | |
1 | It is used to catch all general errors. | “Divide by zero”, “Operation not permitted” etc. can be the error messages of this code. |
2 | It indicates the abuse of shell built-ins. | “Missing keyword”, “No such file or directory” etc. can be the error messages of this code. |
126 | It generates when the any command is unable to execute. | Permission problem or required key not available can generate this status code |
127 | It normally generates for the command path problem. | “Command not found” can be the message for this error code. |
130 | It generates for fatal error. | “Script terminated by Ctrl+C” can be the message of this code. |
255* | It indicates exit code out of range. |
Exemplo-1: Lendo o código de saída do terminal
A variável shell '$?' pode ser usada para exibir o código de saída de qualquer comando. ‘ls –la’ é um comando válido e mostra a lista de arquivos e pastas do diretório de trabalho atual. O valor de '$?' será 0 após a execução do comando 'ls -la'. 'ls –xyz' é um comando inválido e '$?' retornará 2 como código de erro após a execução do comando.
$ echo $?
$ ls -xyz
$ echo $?
Exemplo-2: Lendo o código de saída no script bash
Crie um arquivo bash chamado read_file.sh com o seguinte script. Neste script, o nome do arquivo será considerado como entrada do usuário e o número total de linhas, palavras e caracteres desse arquivo será contado usando o comando `wc`. Se o nome do arquivo for válido, o valor de $status_code será 0 e, se o nome do arquivo for inválido, o valor de $status_code será 1.
read_file.sh
echo "Enter the filename"
read filename
wc -lwc $filename
status_code=$?
echo "The exit of ‘wc’ command is : $status_code"
Exemplo 3: usando o valor do código de saída para realizar uma tarefa específica
Crie um arquivo bash chamado read_month.sh com o seguinte código. Aqui, um valor de data será considerado como entrada. O nome do mês será recuperado do valor da data se a data inserida for válida, caso contrário, a mensagem de erro "data inválida" aparecerá. A condição 'if' é usada no script para verificar o código de status de saída do comando de data. Se a condição for verdadeira, a mensagem de sucesso e o nome do mês da data serão impressos. Se a condição for falsa, a mensagem de falha e o código de status de saída 1 serão impressos.
read_month.sh
echo "Enter a date in the format: YYYY-MM-DD"
read date_value
current_month=$(date -d "$date_value" '+%B')
if [ $? -eq 0 ]
then
echo "Date command is executed Successfully"
echo "Current month is $current_month"
else
echo "Date command is not executed Successfully"
exit 1
fi
Execute o script.
Exemplo-4: Usando && e || com código de saída
O operador lógico '&&' é usado para código de saída bem-sucedido e o operador lógico '||' é usado para código de saída malsucedido. O comando a seguir imprimirá 'Arquivo existe' se o arquivo book.txt existir no local atual e imprimirá 'Arquivo não existe' se o arquivo book.txt não existir no local atual localização.
Conclusão:
Diferentes usos do código de status de saída são mostrados neste tutorial. Espero que o leitor tenha um conceito claro sobre o código de status de saída do bash depois de ler este tutorial.