Manipulação de erros de bash

Manipulação de erros de bash

O tratamento de erros é uma parte muito importante de qualquer linguagem de programação. Bash não tem opção melhor do que outras linguagens de programação para lidar com o erro do script. Mas é essencial tornar o script Bash sem erros no momento da execução do script do terminal. O recurso de manuseio de erros pode ser implementado para o script Bash de várias maneiras. As diferentes técnicas para lidar com os erros no script bash são mostradas neste tutorial.

Exemplo 1: Manipulação de erros usando uma declaração condicional

Crie um arquivo bash com o seguinte script que mostra o uso da instrução condicional para manuseio de erros. A primeira instrução "se" é usada para verificar o número total de argumentos da linha de comando e imprimir uma mensagem de erro se o valor for menor que 2. Em seguida, os valores de dividendo e divisor são retirados dos argumentos da linha de comando. Se o valor do divisor for igual a 0, um erro será gerado e a mensagem de erro será impressa no erro.arquivo txt. O segundo comando "se" é usado para verificar se o erro.O arquivo txt está vazio ou não. Uma mensagem de erro é impressa se o erro.O arquivo txt não está vazio.

#!/BIN/BASH
#Verifique os valores do argumento
se [$# -LT 2]; então
eco "um ou mais argumentos está faltando."
saída
fi
#Leia o valor de dividendos do primeiro argumento da linha de comando
dividendo = $ 1
#Leia o valor do divisor do segundo argumento da linha de comando
divisor = $ 2
#Divide o dividendo pelo divisor
resultado = 'eco "escala = 2; $ dividendo/$ divisor" | bc 2> erro.TXT'
#Leia o conteúdo do arquivo de erro
content = 'erro de gato.TXT'
se [-n "$ content"]; então
#Print a mensagem de erro se o erro.TXT não está vazio
eco "divisível por zero erro."
outro
#Print O resultado
eco "$ dividendo/$ divisor = $ resultado"


Saída:

A saída a seguir aparece após a execução do script anterior sem nenhum argumento:


A saída a seguir aparece após a execução do script anterior com um valor de argumento:


A saída a seguir aparece após a execução do script anterior com dois valores de argumento válidos:


A saída a seguir aparece após a execução do script anterior com dois valores de argumento em que o segundo argumento é 0. A mensagem de erro está impressa:

Exemplo 2: Manipulação de erros usando o código de status de saída

Crie um arquivo bash com o seguinte script que mostra o uso do tratamento de erros BASH por saída do código de status. Qualquer comando bash é assumido como valor de entrada e esse comando é executado posteriormente. Se o código de status de saída não for igual a zero, uma mensagem de erro será impressa. Caso contrário, uma mensagem de sucesso é impressa.

#!/BIN/BASH
#Tome um nome de comando linux
eco -n "Digite um comando:"
Leia CMD_NAME
#Run o comando
$ cmd_name
#Verifique se o comando é válido ou inválido
se [$? -ne 0]; então
eco "$ cmd_name é um comando inválido."
outro
eco "$ cmd_name é um comando válido."
fi
fi


Saída:

A saída a seguir aparece após a execução do script anterior com o comando válido. Aqui, a "data" é tomada como o comando no valor de entrada que é válido:


A saída a seguir aparece após a execução do script anterior para o comando inválido. Aqui, o "CMD" é tomado como o comando no valor de entrada que é inválido:

Exemplo 3: Pare a execução no primeiro erro

Crie um arquivo bash com o seguinte script que mostra o método para interromper a execução quando o primeiro erro do script aparecer. Dois comandos inválidos são usados ​​no seguinte script. Então, dois erros são gerados. O script interrompe a execução depois de executar o primeiro comando inválido usando o comando "set -e".

#!/BIN/BASH
#Configure a opção de encerrar o script no primeiro erro
set -e
ECHO 'data e hora atuais:'
#Valid Command
data
eco 'Diretório de trabalho atual:'
#Comando inválido
cwd
Echo 'Nome de usuário de login:'
#Valid Command
Quem sou eu
Lista de arquivos e pastas de eco: '
#Comando inválido
lista


Saída:

A saída a seguir aparece após a execução do script anterior. O script interrompe a execução depois de executar o comando inválido que é "CWD":

Exemplo 4: Pare a execução para variável não inicializada

Crie um arquivo bash com o seguinte script que mostra o método para interromper a execução do script para a variável não inicializada. Os valores de nome de usuário e senha são retirados dos valores dos argumentos da linha de comando. Se algum dos valores dessas variáveis ​​não for inicializado, uma mensagem de erro será impressa. Se ambas as variáveis ​​forem inicializadas, o script verifica se o nome de usuário e a senha são válidos ou inválidos.

#!/BIN/BASH
#Set a opção de rescindir o script para uma variável não inicializada
set -u
#Set o primeiro valor de argumento da linha de comando para o nome de usuário
nome de usuário = $ 1
#Set o segundo valor de argumento da linha de comando para a senha
Senha = $ 2
#Verifique o nome de usuário e a senha são válidos ou inválidos
se [[$ userName == 'admin' && $ senha == 'hideseek']]; então
eco "usuário válido."
outro
eco "usuário inválido."
fi


Saída:

A saída a seguir aparece se o script for executado sem usar nenhum valor de argumento da linha de comando. O script interrompe a execução depois de obter a primeira variável não inicializada:


A saída a seguir aparece se o script for executado com um valor de argumento da linha de comando. O script interrompe a execução depois de obter a segunda variável não inicializada:


A saída a seguir aparece se o script for executado com dois valores de argumento da linha de comando - "admin" e "hide". Aqui, o nome de usuário é válido, mas a senha é inválida. Então, a mensagem "Usuário inválido" é impresso:


A saída a seguir aparece se o script for executado com dois valores de argumento da linha de comando - "Admin" e "Hideseek". Aqui, o nome de usuário e a senha são válidos. Então, a mensagem "Usuário válida" está impressa:

Conclusão

As diferentes maneiras de lidar com os erros no script bash são mostradas neste tutorial usando vários exemplos. Esperamos que isso ajude os usuários do Bash a implementar o recurso de manipulação de erros em seu script bash.