Come usare le variabili negli script Linux
Negli script Linux posso anche utilizzare delle variabili.
Cos'è una variabile? Una variabile è un contenitore dove memorizzare alcune informazioni ( valori numerici, stringhe, ecc. ). Le variabili sono aspetti fondamentali della programmazione.
Come assegnare un valore alla variabile
Per assegnare un valore a una variabile in uno script Linux, digito il nome che voglio dare alla variabile seguito dal simbolo uguale (=) e dal valore che voglio assegnarli.
nomevariabile=valore
Non c'è bisogno di dichiarare prima la variabile, come invece accade in altri linguaggi di programmazione. Basta assegnarli un valore ( assegnazione ).
Un esempio pratico
Voglio assegnare la stringa "Andrea" alla variabile NOME.
In questo caso digito:
NOME="Andrea"
L'assegnazione del valore sostituisce qualsiasi eventuale informazione già registrata nella variabile.
Nota. Essendo una stringa di testo, il valore deve essere posto tra virgolette. Le virgolette non vanno usate per i valori numerici. Ad esempio, per assegnare il valore 1 alla variabile x devo scrivere x=1. Infine, per assegnare alla variabile il risultato di un comando devo usare gli accenti gravi.
Ho anche la possibilità di chiedere all'utente di digitare un'informazione tramite la tastiera del PC e memorizzarla in una variabile.
In questo caso utilizzo il comando read seguito dal nome della variabile.
read NOME
Quando lo script trova il comando read, si ferma e chiede all'utente di digitare qualcosa in input.
Tutto ciò che digita l'utente viene registrato nella variabile.
Un esempio pratico
In questo script chiedo all'utente di digitare il suo nome e lo registro nella variabile NOME
#!/bin/sh
echo "Come ti chiami?"
read NOME
echo "Ciao "${NOME}
Ecco l'esecuzione dello script sulla linea di comando.
Come visualizzare una variabile
Per visualizzare l'informazione registrata in una variabile utilizzo il comando echo.
echo ${variabile}
Il nome della variabile va inserito tra parentesi graffe e anticipato dal simbolo del dollaro $.
In alternativa, posso indicare la variabile anche senza le parentesi graffe.
echo $variabile
Un esempio pratico
Per stampare a video il contenuto della variabile NOME digito
echo ${NOME}
Quando eseguo lo script, il comando restituisce in output l'informazione precedentemente registata nella variabile.
Andrea
Come cancellare una variabile
Per eliminare una variabile e il suo contenuto, utilizzo il comando unset.
unset nomevariabile
Un esempio pratico
Voglio cancellare la variabile NOME.
Nello script digito
unset NOME
Il comando unset svuota il contenuto della variabile e la cancella.
I tipi di variabili
Ci sono due tipi di variabili negli script Linux:
- Le variabili locali sono spazi di memoria in cui memorizzare dei dati durante l'elaborazione di un programma. Al termine del programma le variabili locali perdono l'informazione contenuta.
- Le variabili shell sono spazi di memoria inizializzate all'avvio della shell. Mi consentono di trasferire dei dati dalla linea di comando allo script.
- Le variabili di ambiente ( o variabili di sistema ) sono spazi di memoria permanenti, inizializzate all'avvio del sistema, che conservano le informazioni anche al termine dell'esecuzione dei programmi. Possono essere lette dagli script.
Le variabili locali sono quelle già viste in precedenza.
Ad esempio
NOME="Andrea"
Quindi ora mi soffermo sulle variabili di shell e di ambiente.
Le variabili di shell
Per passare un dato dalla linea di comando a uno script, quando si lancia lo script dalla linea di comando si aggiunge il dato a destra, separato da uno spazio.
programma dato1 dato2 dato3 ...
Posso aggiungere uno o più dati.
Le informazioni passate dalla linea di comando sono automaticamente registrate nelle variabili di shell $[1..n]
$1 memorizza dato1
$2 memorizza dato2
$3 memorizza dato3
E così via.
Un esempio pratico
Sviluppo un semplice script che stampa i primi due parametri $1 e $2
Lo salvo con il nome prova.sh
echo "Il tuo nome è "$1
echo "Il tuo cognome è "$2
Poi vado sulla linea di comando e lancio lo script passandogli due parametri
./prova.sh andrea minini
Lo script legge i parametri e li assegna alle variabili di shell $1 e $2
L'output sullo schermo è il seguente:
Il tuo nome è andrea
Il tuo cognome è minimi
E' abbastanza facile.
Altre variabili di shell
Le principali variabili shell sono le seguenti:
$0 | memorizza il nome del programma $1, $2, ... , $9 memorizza dei parametri passati dalla linea di comando ( es. $1 memorizza dato 1 ) |
$# | memorizza il numero dei parametri passati dalla linea di comando |
$- | memorizza le opzioni della shel |
$* | memorizza la stringa completa degli argomento ossia dei parametri passati dalla linea di comando, spazi inclusi ( es. dato1 dato2 ) |
$@ | memorizza tutti gli argomenti della linea di comando con le virgolette ( es. "dato1" "dato2" ). |
$$ | memorizza il numero ID del processo corrente |
$! | memorizza il numero ID dell'ultimo comando in background |
Le variabili di ambiente
Le variabili di ambiente sono variabili di sistema. Sono inizializzate all'avvio del sistema o della shell e conservano il loro valore nel tempo. Possono essere lette e in alcuni casi anche modificate dagli script.
Qual è la differenza tra variabili locali e variabili di ambiente?
A differenza delle variabili locali, le variabili di ambiente mantengono il dato anche al termine dell'esecuzione dello script.
Alcune variabili di sistema
$HOSTNAME | il nome del computer host |
$HOSTYPE | il tipo di computer host |
$OSTYPE | il tipo di sistema operativo |
$LOGNAME | il nome di login dell'utente |
$HOME | la directory dell'utente |
$PATH | il percorso della directory corrente |
$HELL | la shell |
I nomi delle variabili di ambiente sono dedicati, non possono essere usati per creare variabili locali.