GNU/Linux >> Znalost Linux >  >> Linux

Zpracování chyb ve skriptech Bash

Skriptování je jedním z klíčových nástrojů pro správce systému ke správě sady každodenních činností, jako je spouštění záloh, přidávání uživatelů/skupin, instalace/aktualizace balíčků atd. Při psaní skriptu je jednou z klíčových funkcí zpracování chyb. věci ke správě.

Tento článek ukazuje některé základní/střední techniky řešení chyb ve skriptování Bash. Diskutuji o tom, jak získat chybové kódy, získat podrobný výstup při provádění skriptu, zabývat se funkcí ladění a standardním přesměrováním chyb. Pomocí těchto technik mohou správci systému usnadnit každodenní práci.

[ Čtenářům se také líbilo: Ukončovací kódy příkazového řádku Bash byly demystifikovány ]

Stav ukončení

Ve skriptování Bash $? vytiskne stav ukončení. Pokud vrátí nulu, znamená to, že nedošlo k chybě. Pokud je nenulová, můžete dojít k závěru, že dřívější úkol má nějaký problém.

Základní příklad je následující:

$ cat myscript.sh
           #!/bin/bash
           mkdir learning
           echo $?

Pokud výše uvedený skript spustíte jednou, vytiskne 0 protože adresář neexistuje, skript jej proto vytvoří. Pokud skript spustíte podruhé, přirozeně získáte nenulovou hodnotu, jak je vidět níže:

$ sh myscript.sh
mkdir: cannot create directory 'learning': File exists
1

Doporučené postupy

Vždy se doporučuje povolit režim ladění přidáním -e možnost do vašeho shell skriptu, jak je uvedeno níže:

$ cat test3.sh
!/bin/bash
set -x
echo "hello World"
mkdiir testing
 ./test3.sh
+ echo 'hello World'
hello World
+ mkdiir testing
./test3.sh: line 4: mkdiir: command not found

Pomocí níže uvedeného příkladu můžete napsat ladicí funkci, jak je uvedeno níže, která vám pomůže ji kdykoli vyvolat:

$ cat debug.sh
#!/bin/bash
_DEBUG="on"
function DEBUG()
{
 [ "$_DEBUG" == "on" ] && $@
}
DEBUG echo 'Testing Debudding'
DEBUG set -x
a=2
b=3
c=$(( $a + $b ))
DEBUG set +x
echo "$a + $b = $c"

Které vytiskne:

$ ./debug.sh
Testing Debudding
+ a=2
+ b=3
+ c=5
+ DEBUG set +x
+ '[' on == on ']'
+ set +x
2 + 3 = 5

Standardní přesměrování chyb

Všechny systémové chyby můžete přesměrovat do vlastního souboru pomocí standardních chyb, které lze označit číslem 2 . Spusťte jej normálními příkazy Bash, jak je ukázáno níže:

$ mkdir users 2> errors.txt
$ cat errors.txt
mkdir: cannot create directory ‘users’: File exists

Ve skriptech je většinou obtížné najít přesné číslo řádku. Chcete-li vytisknout číslo řádku s chybou, použijte PS4 možnost (podporováno Bash 4.1 nebo novějším). Příklad níže:

$ cat test3.sh
#!/bin/bash
PS4='LINENO:'

set -x
echo "hello World"
mkdiir testing

Při čtení chyb můžete snadno vidět číslo řádku:

$ /test3.sh
5: echo 'hello World'
hello World
6: mkdiir testing
./test3.sh: line 6: mkdiir: command not found

[ Získejte tuto bezplatnou e-knihu:Správa clusterů Kubernetes pro figuríny. ]

Sbalit

Správa chyb je klíčovou dovedností administrátorů při psaní skriptů. Tyto tipy by vám měly usnadnit život při odstraňování problémů se skripty Bash nebo dokonce s obecnými příkazy.


Linux
  1. Použití Bash pro automatizaci

  2. Sdílení proměnných ve více skriptech Shell?

  3. Použití příkazu Linux Basename ve skriptech Bash

  1. Naučte se zpracování chyb Bash na příkladu

  2. Spouštět Bash skripty při vstupu do adresáře?

  3. Sazba -a Je zadávání chyby ve skriptu?

  1. Použít rozšíření .sh nebo .bash pro skripty Bash?

  2. Chyba skriptu Bash:Očekává se celočíselný výraz?

  3. Bash:Chyba syntaxe poblíž neočekávaného tokenu `}'?