Ladění skriptu shellu je většinou poměrně jednoduché, ale také nemáme k dispozici žádné nástroje. V rychlosti si shrneme běžné metody ladění.
Když dojde k chybě, shell normálně vytiskne číslo řádku, na kterém se vyskytla chyba. Není-li chyba na první pohled zřejmá, můžeme pomocí dodatečných příkazůecho
zobrazit obsah proměnných a otestovat fragmenty kódu tak, že je interaktivně zapíšeme přímo v shellu.
Protože jsou skripty interpretovány, nedochází při úpravách a zkoušení k žádnému zdržení při překladu.
Základní způsob vystopování těch nejkomplikovanějších chyb spočívá v nastavení různých voleb shellu. K romu můžete využít buď volby příkazového řádku při spouštění shellu anebo příkaz set. Tyto volby shrnuje následující tabulka.
Volba příkazu set | Popis | |
sh -a <skript> | set -o noexec set -a |
Kontroluje jen syntaktické chyby; neprovádí příkazy. |
sh -v <skript> | set -o verbose set -v |
Před zpracováním příkazy vypíše. |
sh -x <skript> | set -o xtrace set -x |
Po zpracování přízaky vypíše |
set -o nouset set -u |
V případě použití nedefinované proměnné vrátí zprávu o chybě. |
set
můžete zapnout zápisem -o a vypnout +o. Podobně to platí i pro zkrácené zápisy.
Volba xtrace
nabízí jednoduché sledování provádění skriptu. Při první zkoušce můžete použít volbu příkazové řádky, ale pokud budete provádět jemnější ladění, můžete příznaky xtrace
(zapínající a vypínající vypisování příkazů) zařadit do kódu kolem problematické části. Při sledovaném provádění shell vytiskne každý řádek skriptu s expandovanými proměnnými ještě před jeho provedením. Stupeň expanze určuje (implicitně) počet znaků + na začátku každého řádku. Znak + můžete změnit na jiný pomocí proměnné shellu PS4, která se nastavuje v konfiguračním souboru shellu.
V shellu můžete také odchytáváním signálu EXIT zjišťovat stav programu při jeho ukončení. Dosáhnete toho, když na začátek skriptu umístíte například následující řádek:
tran 'echo Exitting: critical variable = $critical_variable' EXIT