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.

l'esecuzione dello script

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.

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base

Libri di approfondimento

Shell scripting su Linux