Cum să activați modul de depanare a scriptului Shell în Linux


Un script este pur și simplu o listă de comenzi stocate într-un fișier. În loc să ruleze o secvență de comenzi tastându-le una câte una tot timpul pe terminal, un utilizator de sistem le poate stoca pe toate (comenzi) într-un fișier și invocă în mod repetat fișierul pentru a reexecuta comenzile de mai multe ori.

În timp ce învățăm scripturi sau în primele etape de scriere a scripturilor, în mod normal începem prin a scrie scripturi mici sau scurte cu câteva linii de comenzi. Și de obicei depanăm astfel de scripturi făcând nimic altceva decât să ne uităm la rezultatul lor și să ne asigurăm că funcționează așa cum ne-am propus.

Cu toate acestea, pe măsură ce începem să scriem scripturi foarte lungi și avansate cu mii de linii de comenzi, de exemplu scripturi care modifică setările de sistem, efectuează copii de siguranță critice prin rețele și multe altele, ne vom da seama că doar privind rezultatul unui script nu este suficient pentru a găsi erori într-un script.

Prin urmare, în această depanare a scriptului shell din seria Linux, vom parcurge cum să activam depanarea scriptului shell, vom trece pentru a explica diferitele moduri de depanare a scriptului shell și cum să le folosim în seria ulterioară.

Cum să porniți un script

Un script se distinge de alte fișiere prin prima linie, care conține un #! (She-bang – definește tipul fișierului) și un nume de cale (calea către interpret) care informează sistemul că fișierul este o colecție de comenzi care vor fi interpretate de programul (interpretul) specificat.

Mai jos sunt exemple de „primele rânduri” în diferite tipuri de scripturi:

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

Notă: prima linie sau #! poate fi omisă dacă un script conține doar un set de comenzi standard de sistem, fără niciun fel intern directive shell.

Cum să executați un script Shell în Linux

Sintaxa convențională pentru invocarea unui script shell este:

script_name  argument1 ... argumentN

O altă formă posibilă este prin specificarea clară a shell-ului care va executa scriptul, după cum urmează:

shell script_name argument1 ... argumentN  

De exemplu:

/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]

Pentru scripturile care nu au #! ca primă linie și care conțin numai comenzi de sistem de bază, cum ar fi cea de mai jos:


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

Pur și simplu faceți-l executabil și rulați-l după cum urmează:


chmod +x  script_name
./script_name 

Metode de activare a modului de depanare a scriptului Shell

Mai jos sunt opțiunile principale de depanare a scriptului shell:

  1. -n (prescurtare de la noexec sau no execution) – indică shell-ului să citească toate comenzile, însă nu le execută. Această opțiune activează modul de verificare a sintaxei.
  2. -x (prescurtare pentru xtrace sau execution trace) – spune shell-ului să afișeze toate comenzile și argumentele lor pe terminal în timp ce sunt executate. Această opțiune activează modul de urmărire a shell-ului.

1. Modificarea primei linii a unui script Shell

Primul mecanism este prin modificarea primei linii a unui script shell ca mai jos, aceasta va permite depanarea întregului script.

#!/bin/sh option(s)

În formularul de mai sus, opțiunea poate fi una sau o combinație a opțiunilor de depanare de mai sus.

2. Invocarea Shell cu opțiuni de depanare

Al doilea este prin invocarea shell-ului cu opțiuni de depanare, după cum urmează, această metodă va activa și depanarea întregului script.

shell option(s) script_name argument1 ... argumentN

De exemplu:

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

3. Folosind set Shell Built-in Command

A treia metodă este utilizarea comenzii încorporate set pentru a depana o anumită secțiune a unui script shell, cum ar fi o funcție. Acest mecanism este important, deoarece ne permite să activăm depanarea la orice segment al unui script shell.

Putem activa modul de depanare folosind comanda set din formularul de mai jos, unde opțiunea este oricare dintre opțiunile de depanare.

set option 

Pentru a activa modul de depanare, utilizați:

set -option

Pentru a dezactiva modul de depanare, utilizați:

set +option

În plus, dacă am activat mai multe moduri de depanare în diferite segmente ale unui script shell, le putem dezactiva pe toate simultan, astfel:

set -

Asta este deocamdată cu activarea modului de depanare a scriptului shell. După cum am văzut, putem fie să depanăm un întreg script shell, fie o anumită secțiune a unui script.

În următorii doi episoade ale acestei serii, vom aborda modul de utilizare a opțiunilor de depanare a scriptului shell pentru a explica verbose, verificarea sintaxei și depanarea urmăririi shell > moduri cu exemple.

Important este că nu uitați să puneți întrebări despre acest ghid sau poate să ne oferiți feedback prin secțiunea de comentarii de mai jos. Până atunci, rămâneți conectat la Tecmint.