0Pricing
DevOps Bootcamp · Aula

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 -x para ativar o rastreamento.
  • Use set +x para 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ê pressiona Ctrl+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
done

Verificaçã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. Use set +x para 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

  1. Depuração de Scripts Bash (set -x, trap)
  2. Tratamento de Erros e Status de Saída
  3. Boas Práticas de Scripting e Análise Estática
  4. Testar Scripts Bash com Bats
← Voltar para DevOps Bootcamp