Úvod
Skript shellu může při svém provádění narazit na problémy, což má za následek chybový signál, který skript neočekávaně přeruší.
K chybám dochází v důsledku chybného návrhu skriptu, akcí uživatele nebo selhání systému. Skript, který selže, může zanechat dočasné soubory, které způsobí potíže, když uživatel skript restartuje.
 Tento tutoriál vám ukáže, jak používat trap zajistíte, že se vaše skripty vždy předvídatelně ukončí. 
 Předpoklady
- Přístup k terminálu/příkazovému řádku.
 - Textový editor (Nano, Vi/Vim atd.).
 
Syntaxe pasti bash
 Syntaxe pro trap  příkaz je:
trap [options] "[arguments]" [signals] Příkaz má následující součásti:
- Možnosti poskytují k příkazu další funkce.
 - Argumenty jsou příkazy 
trapspustí se při detekci signálu. Pokud není příkaz pouze jedním slovem, měl by být uzavřen v uvozovkách (" "). Pokud argument obsahuje více než jeden příkaz, oddělte je středníkem (;). - Signály jsou asynchronní upozornění zasílaná systémem, obvykle indikující přerušení generované uživatelem nebo související se systémem. Signály lze volat jejich jménem nebo číslem.
 
Možnosti Bash trap
 trap  příkaz přijímá následující možnosti:
-p- Zobrazuje signální příkazy.-l- Vytiskne seznam všech signálů a jejich čísel.
Níže je uveden úplný seznam 64 signálů a jejich čísla:
| # | Signál | # | Signál | # | Signál | 
|---|---|---|---|---|---|
| 1 | SIGHUP | 23 | SIGURG | 45 | SIGRTMIN+11 | 
| 2 | SIGINT | 24 | SIGXCPU | 46 | SIGRTMIN+12 | 
| 3 | SIGQUIT | 25 | SIGXFSZ | 47 | SIGRTMIN+13 | 
| 4 | SIGILL | 26 | SIGVTALRM | 48 | SIGRTMIN+14 | 
| 5 | SIGTRAP | 27 | SIGPROF | 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 | SIGWAITING | 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 | SIGCONT | 40 | SIGRTMIN+6 | 62 | SIGRTMAX-2 | 
| 19 | SIGSTOP | 41 | SIGRTMIN+7 | 63 | SIGRTMAX-1 | 
| 20 | SIGTSTP | 42 | SIGRTMIN+8 | 64 | SIGRTMAX | 
| 21 | SIGTTIN | 43 | SIGRTMIN+9 | ||
| 22 | SIGTTOU | 44 | SIGRTMIN+10 | 
 Nejčastěji používané signály s trap  příkazy jsou:
SIGHUP (1)- UkliditSIGINT (2)- PřerušitSIGQUIT (3)- KonecSIGABRT (6)- ZrušitSIGALRM (14)- BudíkSIGTERM (15)- Ukončit
Jak používat past v Bash
 Typický scénář pro použití trap  příkaz zachycuje SIGINT  signál. Tento signál odešle systém, když uživatel přeruší provádění skriptu stisknutím Ctrl+C .
Následující ukázkový skript vytiskne slovo „Test " každou sekundu, dokud jej uživatel nepřeruší klávesou Ctrl+C . Skript poté vytiskne zprávu a ukončí se.
trap "echo The script is terminated; exit" SIGINT
while true
do
    echo Test
    sleep 1
done 
 while  smyčka ve výše uvedeném příkladu se provádí nekonečně. První řádek skriptu obsahuje trap  příkaz a pokyny k čekání na SIGINT  signál, vytiskněte zprávu a ukončete skript.
 
 trap  Příkaz se často používá k vyčištění dočasných souborů, pokud se skript ukončí kvůli přerušení. Následující příklad definuje cleanup  funkce, která vytiskne zprávu, odstraní všechny soubory přidané do $TRASH  proměnnou a ukončí skript.
$TRASH=$(mktemp -t tmp.XXXXXXXXXX)
trap cleanup 1 2 3 6
cleanup()
{
  echo "Removing temporary files:"
  rm -rf "$TRASH"
  exit
}
... 
 trap  ve výše uvedeném příkladu provede cleanup  funkce, když detekuje jeden ze čtyř signálů:SIGHUP  , SIGINT  , SIGQUIT  nebo SIGABRT  . Signály jsou označeny jejich číslem.
 Můžete také použít trap  aby uživatel nemohl přerušit provádění skriptu. Tato funkce je důležitá při provádění citlivých příkazů, jejichž přerušení může trvale poškodit systém. Syntaxe pro deaktivaci signálu je:
trap "" [signal] 
 Dvojité uvozovky znamenají, že nebude proveden žádný příkaz. Například k zachycení SIGINT  a SIGABRT  signály, zadejte:
trap "" SIGINT SIGABRT
[a command that must not be interrupted] Pokud chcete signály kdykoli během skriptu znovu povolit, resetujte pravidla pomocí symbolu pomlčky:
trap - SIGINT SIGABRT
[a command that can be interrupted]