Introducción
Un script de shell puede tener problemas durante su ejecución, lo que da como resultado una señal de error que interrumpe el script de forma inesperada.
Los errores ocurren debido a un diseño de script defectuoso, acciones del usuario o fallas del sistema. Una secuencia de comandos que falla puede dejar archivos temporales que causan problemas cuando un usuario reinicia la secuencia de comandos.
Este tutorial le mostrará cómo usar la trap
comando para asegurarse de que sus secuencias de comandos siempre salgan de manera predecible.
Requisitos previos
- Acceso a la terminal/línea de comando.
- Un editor de texto (Nano, Vi/Vim, etc.).
Sintaxis de trampa Bash
La sintaxis de la trap
el comando es:
trap [options] "[arguments]" [signals]
El comando tiene los siguientes componentes:
- Opciones proporcionar funcionalidad adicional al comando.
- Argumentos son los comandos
trap
se ejecuta al detectar una señal. A menos que el comando sea solo una palabra, debe estar entre comillas (" "
). Si el argumento contiene más de un comando, sepárelos con un punto y coma (;
). - Señales son notificaciones asincrónicas enviadas por el sistema, que generalmente indican una interrupción generada por el usuario o relacionada con el sistema. Las señales se pueden llamar por su nombre o número.
Opciones de trampa de golpes
La trap
El comando acepta las siguientes opciones:
-p
- Muestra comandos de señal.-l
- Imprime una lista de todas las señales y sus números.
A continuación se muestra la lista completa de las 64 señales y sus números:
# | Señal | # | Señal | # | Señal |
---|---|---|---|---|---|
1 | SUSCRIBIR | 23 | SIGURG | 45 | SIGRTMIN+11 |
2 | SIGINT | 24 | CPU SIGX | 46 | SIGRTMIN+12 |
3 | SIGQUIT | 25 | SIGXFSZ | 47 | SIGRTMIN+13 |
4 | SIGILL | 26 | SIGVTALRM | 48 | SIGRTMIN+14 |
5 | SIGTRAP | 27 | PROF SIG | 49 | SIGRTMIN+15 |
6 | SIGABRT | 28 | SIGWINCH | 50 | SIGRTMAX-14 |
7 | SIGBUS | 29 | SIGIO | 51 | SIGRTMAX-13 |
8 | SIGFPE | 30 | SIGPWR | 52 | SIGRTMAX-12 |
9 | SIGKILL | 31 | SIGSYS | 53 | SIGRTMAX-11 |
10 | SIGUSR1 | 32 | SIGWAIING | 54 | SIGRTMAX-10 |
11 | SIGSEGV | 33 | SIGLWP | 55 | SIGRTMAX-9 |
12 | SIGUSR2 | 34 | SIGRTMIN | 56 | SIGRTMAX-8 |
13 | SIGPIPE | 35 | SIGRTMIN+1 | 57 | SIGRTMAX-7 |
14 | SIGALRM | 36 | SIGRTMIN+2 | 58 | SIGRTMAX-6 |
15 | SIGTERM | 37 | SIGRTMIN+3 | 59 | SIGRTMAX-5 |
16 | SIGSTKFLT | 38 | SIGRTMIN+4 | 60 | SIGRTMAX-4 |
17 | SIGCHLD | 39 | SIGRTMIN+5 | 61 | SIGRTMAX-3 |
18 | CONT SIGNO | 40 | SIGRTMIN+6 | 62 | SIGRTMAX-2 |
19 | SIGSTOP | 41 | SIGRTMIN+7 | 63 | SIGRTMAX-1 |
20 | SIGTSTP | 42 | SIGRTMIN+8 | 64 | SIGRTMAX |
21 | INICIAR SESIÓN | 43 | SIGRTMIN+9 | ||
22 | SIGTTOU | 44 | SIGRTMIN+10 |