Shell Scripting · 7 min read · Nov 14, 2025
Shell Scripting Parte 2: Accettare Input e Eseguire Aritmetica nella Shell
Ciao! Questo articolo è la seconda parte della serie di tutorial sulla shell scripting di Howtoforge. A questo punto, presumo che tu abbia letto la prima parte della serie e sappia come creare un semplice script ed eseguirlo. Nella seconda parte, imparerai come accettare input dall’utente e elaborarli tramite la shell scripting. Iniziamo!
Variabili in Linux
Proprio come nei linguaggi di programmazione, la shell di Linux ha la capacità di memorizzare dati in variabili. Una variabile è un contenitore che memorizza temporaneamente dati che saranno elaborati tramite un linguaggio di programmazione. Ci sono due tipi di variabili in Linux: le variabili di ambiente e le variabili di shell.
Variabili di Ambiente
Le variabili di ambiente sono le variabili predefinite in Linux e vengono utilizzate per passare informazioni tra i processi nella shell. Le variabili di ambiente sono sensibili al maiuscolo e devono sempre essere scritte in maiuscolo per poterle accedere.
La tabella sottostante mostra le comuni variabili di ambiente nella shell di Linux:
| Nome variabile | Utilizzo |
| BASH | Contiene il percorso completo dell’interprete dei comandi per gli script Bash |
| BASH_VERSION | Contiene la versione di rilascio di bash della macchina attualmente utilizzata |
| HOME | Contiene il percorso relativo della directory home. |
| LOGNAME | Contiene il nome dell’account dell’utente attualmente connesso |
| OSTYPE | Contiene una stringa che descrive il sistema operativo attuale della macchina utilizzata |
| PATH | Contiene un percorso assoluto separato da due punti dei file eseguibili in Linux |
| PWD | Contiene la directory di lavoro corrente della shell |
| SHELL | Contiene la shell della riga di comando preferita |
| USER | Funziona in modo simile a LOGNAME. Contiene il nome dell’account dell’utente attualmente connesso |
| _ | Contiene il nome del comando recentemente utilizzato nella shell |
Per visualizzare il valore di una variabile di ambiente, l’utente deve anteporre un simbolo del dollaro ($) alla variabile da accedere. Ad esempio, per visualizzare alcune informazioni di sistema come la directory di lavoro corrente, l’utente connesso e il tipo di OS usando echo, utilizziamo:
#!/bin/bash
echo $PWD
echo $LOGNAME
echo $OSTYPEIl risultato è:

Per ottenere l’intero elenco delle variabili di ambiente in Linux, utilizza il comando env.
Cambiare i valori delle variabili di ambiente
Per fornire flessibilità al sistema, queste variabili di ambiente possono essere manipolate. Per impostare un valore a una variabile di ambiente, utilizza un’espressione di assegnazione (segno uguale).
Esempio:
#!/bin/bash
echo $USER
USER="nuovo utente"
echo $USERIl risultato dello script è:

Quando esegui lo script, all’inizio, il $USER nella riga echo $USER mostra il valore della variabile USER. Utilizzando un operatore di assegnazione (=), la variabile USER cambia il suo valore. Tuttavia, se l’utente assegna valori sconosciuti a una variabile di ambiente, la shell creerà un’altra variabile di shell simile alla variabile di ambiente nel contesto locale dello script, ma non influenzerà il comportamento di altre applicazioni. Significa che, una volta chiuso il nostro script, la variabile USER manterrà il suo valore predefinito.
Nota che nel nostro esempio precedente, omettiamo il simbolo del dollaro ($) nel nome della variabile quando manipoliamo i valori delle variabili di ambiente, come nella riga USER=”nuovo utente”. Inoltre, quando utilizzi l’operatore di assegnazione, non deve esserci spazio tra USER e il segno =. Aggiungere uno spazio tra di loro crea un errore.
Variabili di Shell
La shell consente anche all’utente di dichiarare variabili. Proprio come in PHP, per dichiarare una variabile negli script della shell, l’utente non deve preoccuparsi di dichiarare il suo tipo di dato; l’interprete rileverà automaticamente il tipo di dato della variabile in base ai dati che l’utente memorizza in essa durante il runtime.
Regole per nominare le variabili di shell
Proprio come in qualsiasi linguaggio di programmazione, ci sono regole per nominare le variabili di shell. Le seguenti riassumono le regole:
- I nomi delle variabili devono iniziare con una lettera o un underscore.
- Devono contenere solo caratteri alfanumerici o un underscore.
- Le variabili sono sensibili al maiuscolo, quindi, le variabili path, PATH e Path sono diverse.
Per dimostrare questa regola, creeremo un semplice script qui sotto:
#!/bin/bash
12abc=10
abc#*=10
_abc=10
_ABC=2
echo $12abc $abc#* $_abc $_ABCLe righe 2 e 3 restituiscono un errore “comando non trovato” perché la variabile 12abc inizia con un carattere numerico e la variabile abc#* contiene caratteri non validi. Abbiamo anche dimostrato che _abc e _ABC sono variabili diverse e la riga _ABC=2 non sovrascrive il valore di _abc.

Assegnare valori alle variabili di shell usando il comando read:
read è un comando che consente di accettare input dall’utente. La sintassi per utilizzare il comando read è:
read Ad esempio, creeremo uno script che consentirà a un utente di inserire il proprio nome e cognome e di visualizzarli. Per far sapere all’utente cosa fare, mostriamo un messaggio di richiesta con il comando echo.
#!/bin/bash
echo "Il tuo nome: "
read fname
echo "Il tuo cognome:"
read lname
echo "Ciao $fname $lname ! Sto imparando a creare script della shell."Il risultato è:

Si prega di notare che, come nel nostro esempio precedente, non dobbiamo dichiarare una variabile per utilizzarla. L’interprete crea automaticamente la variabile utilizzata nel comando read. Tuttavia, nell’esempio, abbiamo ripetutamente utilizzato il comando echo per creare un messaggio di richiesta per l’utente. Il comando read ha anche la capacità di creare un messaggio di richiesta mentre accetta input dall’utente. La sintassi per utilizzare un messaggio di richiesta nel comando read è:
read -p "Il tuo messaggio: " Per semplificare il nostro codice precedente, possiamo ricostruire il codice in:
#!/bin/bash
read -p "Il tuo nome: " fname
read -p "Il tuo cognome: " lname
echo "Ciao $fname $lname ! Sto imparando a creare script della shell"Un altro vantaggio del comando read è che il prompt dei comandi è subito dopo il testo e non nella riga sottostante.

Il comando read può anche essere utilizzato per accettare password. A differenza degli input ordinari, le password sono mascherate per fornire sicurezza. La sintassi per accettare una password è:
read -s -p "il tuo messaggio" Eseguire semplici operazioni aritmetiche usando la shell
Oltre ad accettare input e visualizzare output, la shell bash ha anche un’opzione aritmetica integrata. La tabella sottostante riassume gli operatori aritmetici integrati della shell Bash.
| Operatore | Descrizione | Sintassi | Utilizzo |
| + | Addizione | a=$((b+c)) | Aggiunge il valore di b e c e lo memorizza nella variabile a |
| - | Sottrazione | a=$((b-c)) | Sottrae il valore di c da b e lo memorizza nella variabile a |
| * | Moltiplicazione | a=$((b*c)) | Moltiplica il valore di b e c e lo memorizza nella variabile a |
| / | Divisione | a=$((b/c)) | Divide il valore di b per c e lo memorizza nella variabile a |
| % | Modulo | a=$((b%c)) | Esegue la divisione modulo di b e c e lo memorizza nella variabile a |
| ++ | Pre-incremento | $((++aa)) | Incrementa immediatamente il valore della variabile a |
| ++ | Post-incremento | $((a++)) | Incrementa il valore della variabile a e riflette le modifiche nella riga successiva |
| – | Pre-decremento | $((–a)) | Decrementa immediatamente il valore della variabile a |
| – | Post-decremento | $((a–)) | Decrementa il valore della variabile a e riflette le modifiche nella riga successiva |
| Esponenziazione | $((a2)) | Eleva il valore di a all’esponente di 2 | |
| += | Più uguale | $((a+=b)) | Aggiunge il valore di a e b e lo memorizza nella variabile a |
| -= | Meno uguale | $((a-=b)) | Sottrae il valore di b da a e lo memorizza nella variabile a |
| *= | Per uguale | $((a*=b)) | Moltiplica il valore di a e b e lo memorizza nella variabile a |
| /= | Slash uguale | $((a/=b)) | Divide il valore di a per b e lo memorizza nella variabile a |
| %= | Mod-equal | $((a%=b)) | Esegue la divisione modulo tra a e b e lo memorizza nella variabile a |
Nota che ogni volta che esegui un’istruzione aritmetica, tutte le nostre variabili saranno racchiuse con un simbolo del dollaro e doppie parentesi. Facendo ciò, l’interprete tratta i valori delle nostre variabili come numeri interi. Senza di esso, l’interprete tratta i valori della variabile come una stringa. Per avere un esempio, vedi lo script qui sotto:
#!/bin/bash
read -p "Inserisci int1: " a
read -p "Inserisci int2: " b
echo $((a+b))
c=$a+$b
echo $cQuando eseguiamo il nostro esempio, la riga $((a+b)) aggiunge i valori dell’utente memorizzati nelle variabili a e b rispettivamente, mentre c=$a+$b tratta le variabili a e b come stringhe.

Conclusione
Abbiamo trattato come accettare input e memorizzarli in una variabile e come eseguire operazioni aritmetiche nella shell scripting bash. Nella prossima parte, presenteremo le strutture di controllo e in particolare la struttura decisionale.
Riferimenti:
The Linux Information Project. (2007). Recuperato il 29 aprile 2015, da Linfo.org: http://www.linfo.org/
Cooper, M. (n.d.). Advanced Bash Scripting Guide. Recuperato il 29 aprile 2015, da http://www.tldp.org/LDP/abs/html/
Variabili di Ambiente. (n.d.). Recuperato il 29 aprile 2015, da Documentazione di Ubuntu: https://help.ubuntu.com/community/EnvironmentVariables
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.