Con questo articolo iniziamo una nuova serie, quella sullo scripting Bash. Non ci allontaniamo dal filone principale, perché lo scripting riprende tutto quello che già sappiamo sui comandi Linux e aggiunge la possibilità di salvarli in un file, per non doverli ridigitare ogni volta. Oggi facciamo un paio di script semplicissimi per prendere confidenza, e poi uno che comincia ad avere una certa utilità.
Il primo script
Uno script in Linux non è altro che un file di testo a cui diamo il permesso di esecuzione. Per convenzione gli script Bash hanno l’estensione .sh, ma non è necessario e non cambia nulla nel funzionamento. Creiamo un file vuoto:
touch script1.sh
In questo momento lo script non ha i permessi di esecuzione. Li assegniamo con chmod, come abbiamo visto nel video sui permessi:
chmod +x script1.sh
Ora ls -l mostra la x di esecuzione nei permessi. Apriamo il file con un editor (nel video uso pico, ma va bene nano o qualunque altro) e scriviamo il contenuto:
#!/bin/bash
echo "Ciao mondo"
La prima riga, il cosiddetto shebang, dice al sistema quale shell deve eseguire lo script: cancelletto, punto esclamativo e percorso dell’interprete. In un sistema Linux ci sono più shell, con sintassi leggermente diverse, e dobbiamo dire quale vogliamo usare; più avanti vedremo meglio come funziona. Per ora fidatevi e cominciate sempre così. La seconda riga è il classico saluto, con il comando echo che scrive una stringa sullo standard output.
Lo script si lancia come tutti i comandi che conosciamo: con ./ e il nome, che vuol dire “esegui questo file che sta qui”.
./script1.sh
L’output è:
Ciao mondo
Lanciando lo script vengono eseguiti i comandi al suo interno, quindi tutto quello che abbiamo visto finora sui comandi si può usare anche dentro uno script.
Gli argomenti
Il vantaggio di uno script non è solo risparmiare di ridigitare i comandi, ma anche poter accettare argomenti dalla riga di comando. Creiamo un secondo script. Si possono dare più comandi in una riga sola con il doppio ampersand, che vedremo meglio più avanti:
touch script2.sh && chmod +x script2.sh
Lo script2.sh contiene:
#!/bin/bash
echo Ciao $1
Gli argomenti sono rappresentati dal simbolo del dollaro seguito da un numero che indica la posizione. In generale il dollaro serve a leggere il contenuto di una variabile, quindi è come avere dieci variabili, da 0 a 9, con dentro gli argomenti (la realtà è un po’ più complicata, ma partiamo da qui). Senza argomenti la variabile è vuota e lo script scrive solo “Ciao”:
./script2.sh
L’output è:
Ciao
Con un argomento viene usato al posto di $1:
./script2.sh Fabio
L’output è:
Ciao Fabio
E $0? Contiene il nome dello script stesso, perché lo script è il primo elemento della riga di comando. Lo vediamo con un terzo script, script3.sh, che stampa tutte le variabili:
#!/bin/bash
echo $0 $1 $2 $3 $4
Lanciato senza argomenti e poi con quattro argomenti:
chmod +x script3.sh
./script3.sh
./script3.sh a b c d
Nel primo caso scrive solo il suo nome, nel secondo anche gli argomenti. L’output è:
./script3.sh
./script3.sh a b c d
Uno script utile
Se avete fatto caso, in questo articolo ho ripetuto più volte la stessa operazione: creare il file, dargli i permessi di esecuzione e aprire l’editor. Possiamo incapsulare tutto in uno script che faccia i tre passaggi al posto nostro. Lo chiamiamo con molta originalità crea-script.sh. Prima lo rendiamo eseguibile, poi scriviamo:
#!/bin/bash
touch $1.sh
chmod +x $1.sh
pico $1.sh
Il nome dello script da creare arriva dal primo argomento. Nel video l’editor è pico; se non lo avete installato sostituitelo con nano o con il vostro editor preferito. Lo lanciamo così:
./crea-script.sh script4
Ci ritroviamo dentro l’editor, su un file che si chiama script4.sh, già eseguibile. Scriviamo quello che ci pare, salviamo e usciamo. Con un solo comando abbiamo fatto tre cose: è un esempio semplice, ma fa capire quanto sia facile automatizzare le operazioni con gli script.
Chiusura
Per oggi è tutto. Nel prossimo video introdurremo concetti più avanzati, come i costrutti decisionali e i cicli. Intanto cominciate a sperimentare: conoscete già una marea di comandi da usare per fare esperimenti, quindi aprite la vostra Linux box e iniziate a scriptare in Bash.
Link e risorse
- il video su YouTube
- esempi e comandi della puntata su GitHub
- Manuale di Bash (man page) — in italiano
- Buone pratiche, BashGuide — scrivere script fatti bene
- Shebang, Wikipedia — in italiano
- BashGuide — la guida di riferimento per imparare Bash
Sostieni il canale
PER SOSTENERE IL CANALE BASTANO UN LIKE E UN’ISCRIZIONE!
questi link sono affiliati Amazon, acquistando i libri che ti consiglio sostieni il canale!
