back to top

Altri tipi di variabili – Guida Shell Scripting

Le variabili viste fino ad ora sono dette variabili locali, sono definite dal programmatore e cessano di esistere non appena termina lo script.

Altro tipo di variabili sono le cd. variabili di Shell, variabili automaticamente inizializzate all’avvio della shell che permettono di riferirsi agli argomenti su linea di comando.

Sono detti argomenti su linea di comando quegli argomenti passati al programma tramite, appunto, la lina di comando. Ad es.:

programma argomento1 argomento 2 ...

Ecco una tabellina riassuntiva di tali variabili:

$#numero di argomenti su linea di comando
$-opzioni fornite alla shell
$?valore di uscita dell’ultimo comando eseguito
$nRecupera il valore di uno specifico argomento su linea di comando, dove n varia tra 1 e 9. $1 corrisponde al primo argomento da sinistra
$0il nome del programma corrente
$*tutti gli argomenti su linea di comando (es. "1 2 3 4")
$@tutti gli argomenti su linea di comando, ogniuno quotato separatamente (es. "1" "2" "3" "4")
$$numero ID del processo corrente
$!numero ID del processo dell’ultimo comando messo in background

Facciamo un esempio e creiamo uno script con il seguente contenuto:

#!/bin/sh

#Uso delle variabili di Shell

echo "Numero parametri = "$#
echo "Nome del Programma = "$0 
echo "Tutti i Parametri = "$*
echo "Il parmentro n.1 = "$1
echo "Il parmentro n.3 = "$3

Ora salviamo come "disney.sh", settiamo i consueti permessi e richiamiamo il nostro file da linea di comando seguito da quattro parametri, in questo modo:

./disney.sh pippo pluto topolino paperino

L’output a video sarà:

Numero parametri = 4
Nome del Programma = disney.sh 
Tutti i Parametri = pippo pluto topolino paperino
Il parmentro n.1 = pippo
Il parmentro n.3 = topolino

Per finire il nostro viaggio tra le variabili è necessario ricordarne un’altro gruppo, le cd. variabili d’ambiente caratterizzate dal fatto di conservare nel tempo il loro valore in quanto questo è pre-impostato. Non ritengo opportuno soffermarmi a lungo sull’argomento per il quale mi limito a riportarvi un semplice script di esempio che utilizza alcune tra le variabili in questione:

#!/bin/sh

#Uso delle variabili d'ambiente

echo "Informazioni sul sistema:"
echo -e "hostname: $HOSTNAME"
echo -e "hardware: $HOSTTYPE"
echo -e "OS: $OSTYPE"

echo "Informazioni sull'utente:"
echo -e "logname: $LOGNAME"
echo -e "homedir: $HOME"
echo -e "shell: $SHELL"
echo -e "path: $PATH"

Da notare che nell’esempio abbiamo utilizzato echo con l’opzione -e per abilitare l’interpretazione dei caratteri protetti con backslash.

Non mi resta che concludere ricordandovi di non settare variabili locali utilizzando denominazioni riservate alle variabili d’ambiente ed alle variabili di Shell.

Pubblicità
Massimiliano Bossi
Massimiliano Bossi
Stregato dalla rete sin dai tempi delle BBS e dei modem a 2.400 baud, ho avuto la fortuna di poter trasformare la mia passione in un lavoro (nonostante una Laurea in Giurisprudenza). Adoro scrivere codice e mi occupo quotidianamente di comunicazione, design e nuovi media digitali. Orgogliosamente "nerd" sono il fondatore di MRW.it (per il quale ho scritto centinaia di articoli) e di una nota Web-Agency (dove seguo in prima persona progetti digitali per numerosi clienti sia in Italia che all'estero).