Per cominciare, il primo script che vedremo è l'intramontabile "Hello World!", che ci darà subito un'idea di massima della sintassi del linguaggio. Creiamo un file di testo vuoto, (chiamiamolo, ad esempio, hello.sh), contenente il codice seguente:
#!/bin/bash
# Questo è un commento
echo Hello World # Anche questo è un commento!
Come funziona shell bash
La prima riga informa il sistema che il file deve essere eseguito da /bin/bash, che corrisponde al percorso standard della Bourne-Again Shell su qualsiasi sistema Unix based.
La seconda riga inizia con il simbolo #, che identifica la riga come commento, e viene perciò ignorata dalla shell. L'unica eccezione di questa regola si verifica quando la prima riga del file comincia con #!
(sequenza di caratteri nota come sha-bang), come nel nostro caso. Questa è una direttiva che Unix tratta in maniera specifica: serve a specificare il percorso della shell che dovrà eseguire lo script. Quindi, anche nel caso in cui si stia usando un'altra shell (come le meno diffuse csh o ksh), quello che segue sarà comunque interpretato dalla shell specificato dopo la sequenza di caratteri #!
. Nel nostro esempio, stiamo di fatto forzando l'utilizzo di Bash; e poiché in questa guida non ci occuperemo di altre shell, d'ora in avanti utilizzeremo sempre #!/bin/bash
.
La terza riga esegue il comando echo
con due parametri (o argomenti): il primo è Hello, il secondo è World; questo comando permette di stampare a schermo i parametri che riceve in ingresso. Il simbolo # identifica ancora una volta un commento: # e i caratteri seguenti verranno ignorati dalla shell.
Eseguire lo script
Una volta creato il file, avremo la necessità di eseguire lo script che contiene. Per farlo, apriamo il terminale e posizioniamoci nella directory contenente il file appena creato, tramite il comando cd
seguito dal percorso completo. Adesso eseguiamo il comando chmod
per rendere il file di testo eseguibile, utilizzando la sintassi seguente:
chmod +rx hello.sh
Infine eseguiamo il nostro script, direttamente dal terminale, come segue:
./hello.sh
Se tutto è stato fatto correttamente, l'output del comando genererà la stringa Hello World. Potevamo ottenere lo stesso risultato anche facendo a meno dello script, ovvero eseguendo all'interno della modalità interattiva della shell, il comando echo
:
$ echo Hello World
Hello World
$
Echo in shell Bash
Adesso, apriamo nuovamente il nostro script, e modifichiamolo aggiungendo alcuni spazi fra i due parametri del comando echo
.
#!/bin/bash
# Questo è un commento
echo Hello World # Anche questo è un commento!
Il nuovo script produce esattamente lo stesso risultato dello script precedente; questo perché la shell Bash non tiene conto del numero di spazi presenti tra due parametri successivi di uno stesso comando. Di conseguenza, sia prima che dopo l'aggiunta degli spazi, il comando echo
vede sempre gli stessi due parametri, le stringhe Hello e World, che mostra in output separate da un solo spazio. Se vogliamo stampare un numero arbitrario di spazi che separi i due argomenti, dovremo richiamare echo
con un solo parametro che li includa. Per far questo, è sufficiente modificare lo script in questo modo:
#!/bin/bash
# Questo è un commento
echo "Hello World" # Anche questo è un commento!
Per concludere, proviamo a modificare per l'ultima volta lo script per verificare il comportamento di echo
in diverse situazioni, come segue:
#!/bin/bash
# Questo è un commento
echo "Hello World" # Anche questo è un commento!
echo "Hello World"
echo "Hello * World"
echo Hello * World
echo Hello World
echo "Hello" World
echo Hello " " World
echo "Hello \"*\" World"
echo `hello` world
echo 'hello' world
Nelle prossime lezioni approfondiremo meglio la sintassi dello shell scripting, capendo meglio il perchè di queste differenze.