O comando trap define ações executadas quando o script recebe sinais ou termina. Serve para limpeza (arquivos temporários), resposta a Ctrl+C e comportamento ao encerrar a sessão (incluindo queda de SSH — ver SIGHUP).
| Sinal | Quando ocorre |
|---|---|
SIGINT |
Ctrl+C no terminal |
SIGTERM |
Pedido de encerramento (kill PID) |
EXIT |
Script termina (sucesso ou erro) — não é sinal POSIX, extensão do Bash |
SIGHUP |
Terminal fechado ou conexão SSH caiu — ver SSH e TTY/PTY |
trap 'comandos' SINAL
trap -p # listar traps ativos
trap - SINAL # remover handlerOs comandos ficam entre aspas simples para evitar expansão prematura de variáveis (ou use funções com cuidado).
trap 'echo "Interrompido." >&2; exit 130' SIGINT
while true; do
sleep 1
doneExit 130 é convenção comum após SIGINT (128 + 2).
tmp=$(mktemp)
trap 'rm -f "$tmp"' EXIT
# use $tmp; ao sair (normal ou erro), o arquivo sometrap '' SIGINT # Ctrl+C ignorado neste scriptUse com moderação — o usuário pode ficar preso.
- Mantenha o corpo do
trapsimples (rm, echo, exit). - Combine
trapcom robustez (set -euo pipefail) na integradora. - Teste Ctrl+C e
exitnormal.
IDs 19.F1–19.I1 em exercicios.md e PLANO-EXERCICIOS.md. Gabarito: 16-trap-cleanup.sh.
SSH — shell remoto e automação.