scripting Bash: creare un semplice script Bash

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

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!