Depuração de Scripts Bash (set -x, trap)
Descubra métodos para depurar seus scripts Bash, incluindo o rastreamento da execução e o uso de 'trap' para tratar erros.
Depuração de Scripts Bash (set -x, trap) é uma aula grátis de DevOps Bootcamp no CoddyKit. Esta é a aula 1 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 DevOps Bootcamp, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de DevOps Bootcamp inclui 4 aulas no total.
Por que depurar seus scripts?
Até os melhores scripts podem conter erros! A depuração é o processo de encontrar e corrigir esses erros.
É uma habilidade essencial para qualquer pessoa desenvolvedora, pois ajuda você a entender o que seu script está fazendo passo a passo e onde as coisas podem estar dando errado.
Nesta lição, você aprenderá ferramentas poderosas do Bash para rastrear a execução e lidar com eventos inesperados.
Rastreie seu script com `set -x`
Uma das ferramentas de depuração mais simples e eficazes do Bash é set -x. Ela ativa o rastreamento de comandos.
- Quando está ativo, o Bash imprime cada comando e seus argumentos no erro padrão (o que geralmente significa o seu terminal) imediatamente antes de executá-lo.
- Essa saída inclui o estado das variáveis após a expansão, oferecendo uma visão clara do que o Bash está prestes a fazer.
- É como assistir à execução do seu script em câmera lenta!
Veja `set -x` em ação
Vamos ver set -x em ação. Observe como o shell imprime cada comando após a expansão das variáveis, precedido por um sinal de +.
Experimente executar este exemplo:
#!/bin/bash
# Enable command tracing
set -x
NAME="Coddy"
MESSAGE="Hello, $NAME!"
echo $MESSAGE
# This command will intentionally fail
ls -l /nonexistent_directory
# Disable command tracing
set +x
echo "Tracing is now off."Entenda a saída do rastreamento
Quando set -x está ativado, você verá linhas que começam com o símbolo +. Isso indica uma saída de rastreamento.
- Depois de
+vem o comando que o Bash está prestes a executar, junto com seus argumentos após quaisquer substituições de variáveis ou comandos. - Isso é extremamente útil para ver os valores exatos das variáveis e o comando preciso que está sendo executado.
- Ajuda a localizar problemas como caminhos incorretos, variáveis vazias ou estruturas de comandos não intencionais.
Controle o escopo de `set -x`
Nem sempre é necessário rastrear o script inteiro. Você pode ativar set -x em seções específicas:
- Use
set -xpara ativar o rastreamento. - Use
set +xpara desativar o rastreamento.
Isso permite concentrar seus esforços de depuração nas partes problemáticas do script, sem ser sobrecarregado pela saída das seções estáveis.
Lide com eventos usando `trap`
O comando trap permite capturar sinais e outros eventos e, em seguida, executar um comando quando eles ocorrerem. Isso é útil para:
- Limpeza: garantir que arquivos temporários sejam removidos.
- Tratamento de erros: responder a comandos que falharam.
- Encerramentos adequados: lidar com interrupções do usuário, como Ctrl+C.
A sintaxe básica é trap 'command_to_execute' SIGNAL_OR_EVENT.
Faça a limpeza com `trap EXIT`
O pseudo-sinal EXIT é especial. Um comando associado a EXIT será executado imediatamente antes de o script terminar, independentemente de como ele seja encerrado (com sucesso, falha ou interrupção).
Isso é perfeito para tarefas de limpeza, como excluir arquivos temporários. Experimente executar este script:
#!/bin/bash
TEMP_FILE="/tmp/coddy_temp_$(date +%s).txt"
# Trap the EXIT signal to remove the temp file
trap 'echo "Cleaning up: Removing $TEMP_FILE"; rm -f "$TEMP_FILE"' EXIT
echo "Script started. Creating temporary file..."
touch "$TEMP_FILE"
echo "Temporary file created: $TEMP_FILE"
# Simulate some work
sleep 2
echo "Script logic completed. Exiting..."Capture erros com `trap ERR`
O pseudo-sinal ERR é acionado quando um comando termina com um status diferente de zero (ou seja, quando falha). Isso permite executar ações especificamente quando ocorre um erro.
Observação: trap ERR só funciona se o comando não fizer parte de uma condição if, while ou until, ou se o valor retornado não for verificado explicitamente (por exemplo, command || true).
#!/bin/bash
# Trap ERR to report the error line number
trap 'echo "Error detected on line $LINENO! Exiting."' ERR
echo "Starting script with an intentional error..."
# This command will fail and trigger the ERR trap
ls /this/path/does/not/exist
echo "This line will NOT be reached if an error occurs."Responda a sinais (INT, TERM)
O trap também pode capturar sinais padrão do Linux. Alguns sinais comuns são:
INT(interrupção): enviado quando você pressionaCtrl+C.TERM(término): uma solicitação para encerrar um processo de forma adequada.
A captura desses sinais permite que o script faça uma limpeza ou salve o estado antes de ser encerrado, em vez de terminar abruptamente.
#!/bin/bash
# Trap INT (Ctrl+C) to exit gracefully
trap 'echo "\nCaught Ctrl+C! Exiting gracefully..."; exit 1' INT
echo "Running a continuous task. Press Ctrl+C to stop."
while true; do
echo "Working... $(date)"
sleep 3
doneVerificação de depuração
Vamos verificar seu entendimento sobre as técnicas de depuração do Bash.
Recapitulação: depure seus scripts
Parabéns! Você aprendeu ferramentas essenciais para depurar seus scripts Bash:
set -x: ativa o rastreamento de comandos, mostrando exatamente o que o Bash executa. Useset +xpara desativá-lo.trap: permite executar comandos em resposta a eventos ou sinais específicos.- `trap EXIT`: garante que as tarefas de limpeza sejam executadas antes do fim do script.
- `trap ERR`: captura comandos que terminam com um status diferente de zero.
- `trap INT`/`TERM`: lida adequadamente com interrupções do usuário ou solicitações de encerramento.
Dominar essas técnicas melhorará significativamente sua capacidade de solucionar problemas e criar scripts Bash robustos!
Perguntas Frequentes
A aula “Depuração de Scripts Bash (set -x, trap)” é grátis?
Sim — o texto completo de “Depuração de Scripts Bash (set -x, trap)” é 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 DevOps Bootcamp, atualize para CoddyKit PRO. O curso de DevOps Bootcamp inclui 4 aulas no total.
O que vou aprender em “Depuração de Scripts Bash (set -x, trap)”?
Descubra métodos para depurar seus scripts Bash, incluindo o rastreamento da execução e o uso de 'trap' para tratar erros. Você pratica DevOps Bootcamp 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 DevOps Bootcamp?
Nenhuma experiência prévia é necessária. DevOps Bootcamp 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 1 de 4.
Quanto tempo leva a aula “Depuração de Scripts Bash (set -x, trap)”?
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 DevOps Bootcamp?
Sim. Cada aula de DevOps Bootcamp 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