3.4.10 Scripting language

Lo scripting language è il linguaggio di programmazione interpretato dalla shell. Esso si compone di comandi interni (built-in), propri di Bash, file eseguibili ed operatori aritmetico-logici.

È possibile pertanto realizzare degli script, ovvero files di testo che contengono istruzioni comprensibili dalla shell e da questa interpretate ed eseguite. Tali istruzioni possono essere composte dai comandi interni della shell e dai comandi del sistema (nomi di file eseguibili) con la sintassi accettata dalla riga di comando. Scrivere uno script di shell è come scrivere una sequenza di comandi da poter far eseguire in blocco alla shell indicando semplicemente il nome del file che li contiene (lo script)12.

Ad esempio, se si vuol fare eseguire in sequenza i comandi

 
$ echo Sto creando il file 'pippo'
$ ls > pippo  
si può creare un file prova (ad esempio con il comando vi prova) ed inserire al suo interno le righe seguenti

 
echo Sto creando il file 'pippo'
ls > pippo  
poi fare in modo che tale file sia eseguibile, con il comando

 
$ chmod u+x prova
 
A questo punto sarà sufficiente digitare il comando

 
$ ./prova  
per far eseguire i comandi in esso contenuti.

In realtà Bash mette a disposizione un potente scripting language, con la valutazione di espressioni condizionali, cicli, inclusioni di file, che permette di automatizzare in maniera piuttosto semplice qualunque operazione di sistema.

Il lancio in esecuzione di un comando può richiedere degli argomenti sulla riga di comando. Questi vengono passati come parametri al processo che viene posto in esecuzione dalla shell che si preoccupa di “tokenizzarli” (separarli l’uno dall’altro, riconoscendo come simbolo separatore il carattere spazio ‘ ’).

Allo stesso modo, anche gli script Bash possono ricevere degli argomenti dalla riga di comando. Gli argomenti passati agli script sono memorizzati nei parametri $0, $1, $2, ... dello script stesso.

Come trattato nel cap. 7, quando un processo termina, esso ritorna un valore di uscita, detto exit status, cioè un valore numerico di un byte. L’exit status dell’ultimo processo eseguito viene memorizzato nel parametro $?.

Quando viene impartito un comando, rappresentato da un file eseguibile, la shell crea un nuovo processo per la sua esecuzione secondo quanto di seguito riportato:

La sintassi del linguaggio di scripting di Bash è piuttosto articolata, e di seguito saranno riportate alcune caratteristiche essenziali per la comprensione e realizzazione di semplici script. Per una descrizione più dettagliata della programmazione con Bash v.  [0].

I comandi vengono scritti in sequenza su righe diverse. Alcuni caratteri assumono un significato particolare, di seguito illustrato: