Ricerca nel sito web

Come abilitare la modalità di debug dello script Shell in Linux


Uno script è semplicemente un elenco di comandi memorizzati in un file. Invece di eseguire una sequenza di comandi digitandoli uno per uno continuamente sul terminale, un utente del sistema può memorizzarli tutti (comandi) in un file e richiamare ripetutamente il file per rieseguire i comandi più volte.

Durante l'apprendimento dello scripting o durante le prime fasi della scrittura degli script, normalmente iniziamo scrivendo script piccoli o brevi con poche righe di comandi. E di solito eseguiamo il debug di tali script non facendo altro che osservare il loro output e assicurarci che funzionino come previsto.

Tuttavia, quando inizieremo a scrivere script molto lunghi e avanzati con migliaia di righe di comandi, ad esempio script che modificano le impostazioni di sistema, eseguono backup critici sulle reti e molto altro, ci renderemo conto che guardare solo l'output di uno script non è abbastanza per trovare bug all'interno di uno script.

Pertanto, in questa serie di debug degli script di shell nella serie Linux, spiegheremo come abilitare il debug degli script di shell, passeremo a spiegare le diverse modalità di debug degli script di shell e come utilizzarle nelle serie successive.

Come avviare uno script

Uno script si distingue dagli altri file per la sua prima riga, che contiene un #! (She-bang – definisce il tipo di file) e un nome di percorso (percorso all'interprete) che informa il sistema che il file è una raccolta di comandi che verranno interpretati dal programma specificato (interprete).

Di seguito sono riportati esempi delle “prime righe” in diversi tipi di script:

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

Nota: la prima riga o #! può essere omessa se uno script contiene solo una serie di comandi di sistema standard, senza alcun comando interno direttive della shell.

Come eseguire uno script di shell in Linux

La sintassi convenzionale per invocare uno script di shell è:

script_name  argument1 ... argumentN

Un'altra forma possibile è specificare chiaramente la shell che eseguirà lo script come di seguito:

shell script_name argument1 ... argumentN  

Per esempio:

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

Per gli script che non hanno #! come prima riga e contengono solo comandi di sistema di base come quello seguente:


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

Basta renderlo eseguibile ed eseguirlo come segue:


chmod +x  script_name
./script_name 

Metodi per abilitare la modalità di debug degli script di shell

Di seguito sono riportate le principali opzioni di debug degli script di shell:

  1. -n (abbreviazione di noexec o no ecxecution) – ordina alla shell di leggere tutti i comandi, ma non li esegue. Questa opzione attiva la modalità di controllo della sintassi.
  2. -x (abbreviazione di xtrace o esecuzione traccia) – dice alla shell di visualizzare tutti i comandi e i relativi argomenti sul terminale mentre vengono eseguiti. Questa opzione abilita la modalità di tracciamento della shell.

1. Modifica della prima riga di uno script di shell

Il primo meccanismo consiste nell'alterare la prima riga di uno script di shell come di seguito, ciò consentirà il debug dell'intero script.

#!/bin/sh option(s)

Nel modulo sopra, l'opzione può essere una o una combinazione delle opzioni di debug sopra.

2. Invocazione della Shell con opzioni di debug

Il secondo è invocando la shell con le opzioni di debug come segue, questo metodo attiverà anche il debug dell'intero script.

shell option(s) script_name argument1 ... argumentN

Per esempio:

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

3. Utilizzo del comando integrato della shell impostato

Il terzo metodo consiste nell'utilizzare il comando integrato set per eseguire il debug di una determinata sezione di uno script di shell come una funzione. Questo meccanismo è importante poiché ci consente di attivare il debug in qualsiasi segmento di uno script di shell.

Possiamo attivare la modalità di debug utilizzando il comando set nel modulo sottostante, dove opzione è una qualsiasi delle opzioni di debug.

set option 

Per abilitare la modalità debug, utilizzare:

set -option

Per disabilitare la modalità di debug, utilizzare:

set +option

Inoltre, se abbiamo abilitato diverse modalità di debug in diversi segmenti di uno script di shell, possiamo disabilitarle tutte contemporaneamente in questo modo:

set -

Per ora è tutto abilitando la modalità di debug degli script di shell. Come abbiamo visto, possiamo eseguire il debug di un intero script di shell o di una sezione particolare di uno script.

Nei prossimi due episodi di questa serie, tratteremo come utilizzare le opzioni di debug degli script della shell per spiegare il debugging dettagliato, il controllo della sintassi e il debug del tracciamento della shell modalità con esempi.

È importante sottolineare che non dimenticare di porre domande su questa guida o magari di fornirci feedback tramite la sezione commenti qui sotto. Fino ad allora, resta connesso a Tecmint.