Kako omogućiti Shell Script mod za otklanjanje grešaka u Linuxu


Skripta je jednostavno lista naredbi pohranjenih u datoteci. Umjesto pokretanja niza naredbi tako što ih upisuje jednu po jednu cijelo vrijeme na terminalu, korisnik sistema može sve njih (naredbe) pohraniti u datoteku i više puta pozivati datoteku da bi ponovo izvršio komande nekoliko puta.

Dok učimo pisanje skripti ili tokom ranih faza pisanja skripti, obično počinjemo pisanjem malih ili kratkih skripti s nekoliko redova naredbi. I mi obično otklanjamo greške u takvim skriptama tako što ne radimo ništa više od gledanja na njihov izlaz i osiguravamo da rade kako smo namjeravali.

Međutim, kako počnemo da pišemo veoma dugačke i napredne skripte sa hiljadama linija komandi, na primer skripte koje menjaju sistemske postavke, izvode kritične sigurnosne kopije preko mreža i još mnogo toga, shvatićemo da samo gledanje izlaza skripte nije dovoljno da se pronađu greške unutar skripte.

Stoga, u ovoj seriji otklanjanja grešaka u shell skripti u Linux seriji, proći ćemo kroz kako da omogućimo otklanjanje grešaka u skripti ljuske, preći ćemo na objašnjenje različitih načina otklanjanja grešaka u shell skripti i kako ih koristiti u narednim serijama.

Kako pokrenuti skriptu

Skripta se razlikuje od ostalih datoteka po svom prvom redu, koji sadrži #! (She-bang – definira tip datoteke) i naziv putanje (put do interpretatora) koji informiše sistem da je datoteka kolekcija naredbi koje će interpretirati navedeni program (interpreter).

Ispod su primjeri "prvih redaka" u različitim vrstama skripti:

#!/bin/sh          [For sh scripting]
#!/bin/bash        [For bash scripting] 
#!/usr/bin/perl    [For perl programming]
#!/bin/awk -f      [For awk scripting]   

Napomena: Prvi red ili #! može biti izostavljen ako skripta sadrži samo skup standardnih sistemskih naredbi, bez ikakvih internih shell direktive.

Kako izvršiti shell skriptu u Linuxu

Konvencionalna sintaksa za pozivanje shell skripte je:

script_name  argument1 ... argumentN

Drugi mogući oblik je jasno specificiranje ljuske koja će izvršiti skriptu kao u nastavku:

shell script_name argument1 ... argumentN  

Na primjer:

/bin/bash script_name argument1 ... argumentN     [For bash scripting]
/bin/ksh script_name argument1 ... argumentN      [For ksh scripting]
/bin/sh script_name argument1 ... argumentN       [For sh scripting]

Za skripte koje nemaju #! kao prvi red i sadrže samo osnovne sistemske komande kao što je ova ispod:


#script containing standard system commands
cd /home/$USER
mkdir tmp
echo "tmp directory created under /home/$USER"

Jednostavno ga učinite izvršnim i pokrenite ga na sljedeći način:


chmod +x  script_name
./script_name 

Metode omogućavanja načina za otklanjanje grešaka u shell skripti

Ispod su opcije za otklanjanje grešaka primarne shell skripte:

  1. -n (skraćenica od noexec ili no ecxecution) – daje instrukcije ljusci da pročita sve naredbe, ali ih ne izvršava. Ova opcija aktivira mod za provjeru sintakse.
  2. -x (skraćeno od xtrace ili execution trace) – govori ljusci da prikaže sve komande i njihove argumente na terminalu dok se izvršavaju. Ova opcija omogućava način praćenja ljuske.

1. Modificiranje prvog retka shell skripte

Prvi mehanizam je promjenom prvog reda shell skripte kao dolje, što će omogućiti otklanjanje grešaka cijele skripte.

#!/bin/sh option(s)

U obrascu iznad, opcija može biti jedna ili kombinacija gore navedenih opcija za otklanjanje grešaka.

2. Pozivanje ljuske sa opcijama za otklanjanje grešaka

Drugi je pozivanjem ljuske sa opcijama za otklanjanje grešaka kako slijedi, ovaj metod će također uključiti otklanjanje grešaka cijele skripte.

shell option(s) script_name argument1 ... argumentN

Na primjer:

/bin/bash option(s) script_name argument1 ... argumentN   

3. Korištenje set Shell Built-in Command

Treći metod je korištenje ugrađene naredbe set za otklanjanje grešaka u datom dijelu shell skripte kao što je funkcija. Ovaj mehanizam je važan jer nam omogućava da aktiviramo otklanjanje grešaka u bilo kom segmentu shell skripte.

Možemo uključiti način otklanjanja grešaka pomoću naredbe set u obrascu ispod, gdje je opcija bilo koja od opcija za otklanjanje grešaka.

set option 

Da omogućite način otklanjanja grešaka, koristite:

set -option

Da onemogućite način otklanjanja grešaka, koristite:

set +option

Osim toga, ako smo omogućili nekoliko načina za otklanjanje grešaka u različitim segmentima shell skripte, možemo ih sve onemogućiti odjednom na sljedeći način:

set -

To je to za sada sa omogućavanjem režima za otklanjanje grešaka u shell skripti. Kao što smo vidjeli, možemo ili debugovati čitavu shell skriptu ili određeni dio skripte.

U sljedeće dvije epizode ove serije ćemo pokriti kako koristiti opcije za otklanjanje grešaka u shell skripti da objasnimo opširno, provjeru sintakse i otklanjanje grešaka u praćenju ljuske načini rada s primjerima.

Važno je da ne zaboravite postaviti bilo kakva pitanja o ovom vodiču ili nam možda dati povratne informacije putem odjeljka za komentare ispod. Do tada, ostanite povezani s Tecmint-om.