Saia da Bash On Error

Saia da Bash On Error
Um código de status de saída é retornado quando qualquer comando Linux é executado do terminal, o comando é bem -sucedido ou sem êxito. Este código de status pode ser usado para mostrar a mensagem de erro para execução malsucedida ou executar qualquer tarefa em particular usando o script de shell. O código de status de saída sempre representa por um número. O valor deste código é 0 para a execução bem -sucedida de qualquer comando Linux e retorna qualquer número de 1 a 255 para a execução malsucedida do comando. Como o código de status existe pode ser usado no terminal e no script bash são mostrados neste tutorial.

Alguns códigos de status de erro comum são mencionados abaixo.

Código Descrição Comentários
0 Indica execução bem -sucedida.
1 É usado para capturar todos os erros gerais. “Divida por zero”, “Operação não permitida” etc. pode ser as mensagens de erro deste código.
2 Indica o abuso de shell embutidos. “Palavra -chave ausente”, “nenhum arquivo ou diretório” etc. pode ser as mensagens de erro deste código.
126 Gera quando qualquer comando não conseguir executar. Problema de permissão ou chave necessária não disponível pode gerar este código de status
127 Normalmente gera o problema do caminho do comando. "Comando não encontrado" pode ser a mensagem para este código de erro.
130 Gera um erro fatal. "Script terminado por Ctrl+C" pode ser a mensagem deste código.
255* Indica o código de saída fora do intervalo.

Exemplo 1: Leitura de 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 depois de executar o comando.

$ ls -la
$ echo $?
$ ls -xyz
$ echo $?

Exemplo-2: Leitura de 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á tomado como entrada do usuário e, 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, então o valor de $ status_code é 1.

read_file.sh

#!/BIN/BASH
eco "Entre no nome do arquivo"
Leia o nome do arquivo
WC -LWC $ FILENAME
status_code = $?
eco "A saída do comando 'wc' é: $ status_code"

Exemplo 3: Usando o valor do código de saída para fazer tarefa específica

Crie um arquivo bash chamado read_month.sh Com o seguinte código. Aqui, um valor de data será tomado como entrada. O nome do mês recuperará a partir do valor da data se a data de entrada for válida, caso contrário, a mensagem de erro "data inválida" aparecerá. A condição 'se' for 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 imprimirá.

read_month.sh

#!/BIN/BASH
eco "Digite uma data no formato: AAAA-MM-DD"
Leia date_value
current_month = $ (data -d "$ date_value" '+%b')
se [$? -Eq 0]
então
eco "Data Comando é executado com sucesso"
eco "O mês atual é $ current_month"
outro
Echo "Date Command não é executado com sucesso"
saída 1
fi

Execute o script.

$ bash read_month.sh

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 o código de saída malsucedido. O seguinte comando imprimirá 'Arquivo', se livro.TXT existe arquivo no local atual e imprimir 'o arquivo não existe' se livro.TXT O arquivo não existe no local atual.

$ CAT Livro.txt && eco "Arquivo existe" || eco "o arquivo não existe"

Conclusão:

Diferentes usos do código de status de saída são mostrados neste tutorial. Esperança, o leitor receberá um conceito claro sobre o código de status de saída do BASH depois de ler este tutorial.