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 variabileUtilizzo
BASHContiene il percorso completo dell’interprete dei comandi per gli script Bash
BASH_VERSIONContiene la versione di rilascio di bash della macchina attualmente utilizzata
HOMEContiene il percorso relativo della directory home.
LOGNAMEContiene il nome dell’account dell’utente attualmente connesso
OSTYPEContiene una stringa che descrive il sistema operativo attuale della macchina utilizzata
PATHContiene un percorso assoluto separato da due punti dei file eseguibili in Linux
PWDContiene la directory di lavoro corrente della shell
SHELLContiene la shell della riga di comando preferita
USERFunziona 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 $OSTYPE

Il 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 $USER

Il 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:

  1. I nomi delle variabili devono iniziare con una lettera o un underscore.
  2. Devono contenere solo caratteri alfanumerici o un underscore.
  3. 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 $_ABC

Le 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.

OperatoreDescrizioneSintassiUtilizzo
+Addizionea=$((b+c))Aggiunge il valore di b e c e lo memorizza nella variabile a
-Sottrazionea=$((b-c))Sottrae il valore di c da b e lo memorizza nella variabile a
*Moltiplicazionea=$((b*c))Moltiplica il valore di b e c e lo memorizza nella variabile a
/Divisionea=$((b/c))Divide il valore di b per c e lo memorizza nella variabile a
%Moduloa=$((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 $c

Quando 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

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.