Tratamento de Erros e Status de Saída
Implemente verificações robustas de erros em seus scripts entendendo os status de saída e usando 'set -e' e lógica condicional.
Tratamento de Erros e Status de Saída é uma aula grátis de Linux Command Line & Bash Scripting Mastery no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Linux Command Line & Bash Scripting Mastery, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Linux Command Line & Bash Scripting Mastery inclui 4 aulas no total.
Boas-vindas ao tratamento de erros
Nesta lição, você aprenderá a lidar com erros de forma eficaz para tornar seus scripts Bash mais robustos.
Imagine um script que executa muitas etapas. Se uma etapa falhar, você provavelmente vai querer que o script pare ou, pelo menos, fique sabendo da falha, certo? É aí que entra o tratamento de erros!
O que é um status de saída?
Cada comando executado no shell do Linux retorna um status de saída (às vezes chamado de código de saída ou código de retorno).
- Um status 0 significa que o comando foi concluído com sucesso.
- Um status diferente de zero (por exemplo, 1, 2, 127) indica algum tipo de falha ou erro.
É como um semáforo para os seus comandos!
Verifique o status de saída manualmente
Você pode verificar o status de saída do último comando executado usando a variável especial $?.
Vamos experimentar um comando bem-sucedido e outro que falha:
#!/bin/bash
echo "Hello CoddyKit"
echo "Exit status: $?"
ls non_existent_file.txt
echo "Exit status: $?"Verificação condicional básica de erros
Conhecer o status de saída permite que o script tome decisões. Você pode usar uma instrução if para verificar $? e reagir a erros.
Isso faz com que o script reconheça os problemas e evita que ele continue usando dados inválidos.
#!/bin/bash
ls non_existent_file.txt
if [ $? -ne 0 ]; then
echo "Error: The 'ls' command failed!"
exit 1 # Exit script with an error code
fi
echo "This line will not run if 'ls' fails."O poder de `set -e`
Verificar manualmente $? após cada comando pode ser trabalhoso. É nesse ponto que set -e se torna útil!
Quando você inicia um script com set -e, o Bash encerra imediatamente se algum comando (que não faça parte de um teste condicional) terminar com um status diferente de zero.
É um mecanismo global de segurança para os seus scripts!
`set -e` em ação
Vamos ver como set -e impede que um script continue após um erro. Observe como o comando echo final nunca é alcançado.
#!/bin/bash
set -e
echo "Starting important tasks..."
# This command will fail
cp /non_existent_source /tmp/destination
echo "This line will NOT be printed if 'cp' fails."
echo "All tasks completed successfully."Quando `set -e` não interrompe
set -e é poderoso, mas segue regras específicas. Ele não fará o script ser encerrado se o comando que falhou:
- Fizer parte de uma condição
ifouwhile. - Fizer parte de uma lista
&&ou||(exceto o último comando). - For precedido por
!.
Esses contextos foram criados para testar sucesso ou falha, portanto `set -e` não interfere neles.
Combine `set -e` com `||`
Às vezes, você quer exibir uma mensagem de erro personalizada antes de sair. É possível combinar set -e com o operador || (OR).
command || { echo "Error message"; exit 1; }
Se command falhar, a parte após || será executada, exibirá sua mensagem e, em seguida, sairá com um código de erro específico.
#!/bin/bash
set -e
echo "Attempting to find a file..."
find /non_existent_dir -name "*.txt" || \
{ echo "ERROR: Could not search in /non_existent_dir!"; exit 1; }
echo "Script continued (this won't print if 'find' fails)."Lide com códigos de saída específicos
Embora 0 signifique sucesso e um valor diferente de zero signifique falha, códigos específicos diferentes de zero podem ter significados distintos.
1: erro geral.2: uso incorreto de comandos internos do shell.127: comando não encontrado.
Você pode usar if [ $? -eq 127 ] para verificar tipos específicos de falha e fornecer informações de erro mais adequadas.
Questionário sobre tratamento de erros
Qual das afirmações a seguir sobre os status de saída e o tratamento de erros do Bash é TRUE?
Recapitulação: scripts robustos
Você aprendeu a tornar seus scripts Bash muito mais confiáveis!
- Cada comando retorna um status de saída (0 para sucesso, diferente de zero para falha).
- A variável
$?fornece o status de saída do último comando. set -eé uma ferramenta poderosa que encerra automaticamente o script na maioria das falhas de comandos.- Combine
set -ecom||para exibir mensagens de erro personalizadas.
Usar essas técnicas ajudará você a escrever scripts mais profissionais e estáveis.
Perguntas Frequentes
A aula “Tratamento de Erros e Status de Saída” é grátis?
Sim — o texto completo de “Tratamento de Erros e Status de Saída” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Linux Command Line & Bash Scripting Mastery, atualize para CoddyKit PRO. O curso de Linux Command Line & Bash Scripting Mastery inclui 4 aulas no total.
O que vou aprender em “Tratamento de Erros e Status de Saída”?
Implemente verificações robustas de erros em seus scripts entendendo os status de saída e usando 'set -e' e lógica condicional. Você pratica Linux Command Line & Bash Scripting Mastery com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Linux Command Line & Bash Scripting Mastery?
Nenhuma experiência prévia é necessária. Linux Command Line & Bash Scripting Mastery no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Tratamento de Erros e Status de Saída”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Linux Command Line & Bash Scripting Mastery?
Sim. Cada aula de Linux Command Line & Bash Scripting Mastery inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Depuração de Scripts Bash (set -x, trap)
- Tratamento de Erros e Status de Saída
- Boas Práticas de Scripting e Análise Estática
- Testar Scripts Bash com Bats