Prerequisiti
Prima di seguire questo tutorial, ti consiglio di avere:
- Un sistema operativo basato su Unix (Linux o macOS), oppure Windows con Git Bash o Windows Subsystem for Linux (WSL) installato
- Familiarità di base con la navigazione nel terminale (aprire un terminale, elencare i file con
ls, cambiare directory concd) - Un editor di testo come nano, vim o VS Code per scrivere il contenuto dello script
Come scrivere uno script Bash
Costruiremo un semplice esempio di script bash “Hello World” per iniziare con il bash scripting. Se vuoi approfondire, dai un’occhiata al corso Introduction to Bash Scripting.
Passaggio 1: crea un nuovo file di testo semplice
Il primo passaggio è creare un nuovo file di testo semplice con estensione .sh. Su Linux o macOS, esegui dal terminale:
touch hello_world.shSu Windows, puoi usare Git Bash o Windows Subsystem for Linux (WSL) — entrambi supportano lo stesso comando touch. In alternativa, crea il file in un qualsiasi editor di testo (VS Code, Notepad, nano) e salvalo con estensione .sh.
Passaggio 2: specificare l’interprete
Sulla prima riga del nostro script dobbiamo specificare quale interprete vogliamo usare per analizzare lo script. In questo caso è Bash. Quindi dobbiamo inserire lo shebang nella prima riga dello script.
#!/bin/bashPassaggio 3: implementare i comandi
Lo scopo del nostro script bash è stampare “Hello World!”. Per svolgere questo compito, vai a una nuova riga e usa il comando echo seguito dalla stringa che vogliamo stampare.
echo "Hello World!" Una volta terminato, salva il file e apri Git Bash.
Nota: Puoi scaricare Git Bash da Git downloads. Seleziona semplicemente la versione di Git corrispondente al tuo sistema operativo.
Quindi, esegui il seguente comando:
bash hello_world.shDovrebbe stampare “Hello World!” come mostrato in Figura 1.

Figura 1: L’output del nostro script Bash
Passaggio 4: rendere eseguibile lo script
Invece di anteporre sempre bash agli script, puoi rendere uno script direttamente eseguibile usando chmod:
chmod +x hello_world.sh
./hello_world.shIl comando chmod +x concede il permesso di esecuzione al file. Il prefisso ./ indica alla shell di eseguire lo script dalla directory corrente. Questo è il modo standard per distribuire ed eseguire script bash in produzione — la maggior parte degli script che incontrerai saranno eseguiti in questo modo.
Come acquisire input dell’utente negli script Bash
Ora sai come scrivere un semplice script “Hello World!”. Vediamo come potremmo usare bash per scrivere script che richiedono input dall’utente. In questo esempio, creeremo un generatore di attività: chiederà all’utente il nome e poi sceglierà casualmente un’attività da un array di attività per invitarlo a partecipare.
I passaggi per creare il file sono gli stessi descritti in Come scrivere uno script Bash — la differenza sta nei comandi che inseriamo nello script.
- Crea un nuovo file di testo semplice dal terminale.
touch generate-activity.sh- Specifica l’interprete bash inserendo lo shebang nella prima riga dello script.
#!/bin/bash- Scrivi i comandi per eseguire lo script e poi salva il file.
Ora, quando richiamiamo il nostro script bash dal terminale, dovremmo aspettarci di vedere lo stesso output mostrato in Figura 2.
#!/bin/bash
# Greet user and request their name
echo "The activity generator"
read -p "What is your name? " name
# Create an array of activities
activity[0]="Football"
activity[1]="Table Tennis"
activity[2]="8 Ball Pool"
activity[3]="PS5"
activity[4]="Blackjack"
array_length=${#activity[@]} # Store the length of the array
index=$(($RANDOM % $array_length)) # Randomly select an index from 0 to array_length
# Invite the user to join you participate in an activity
echo "Hi" $name, "would you like to play" ${activity[$index]}"?"
read -p "Answer: " answer
Figura 2: Dimostrazione dello script generate-activity.sh.
Lavorare con le variabili negli script Bash
Le variabili memorizzano dati che possono essere referenziati e riutilizzati all’interno di uno script. Per definire una variabile, assegna un valore senza spazi attorno al segno =. Accedi al suo valore anteponendo al nome il simbolo $:
#!/bin/bash
# Define variables
greeting="Hello"
user_name="Alice"
current_year=$(date +%Y) # Command substitution
# Use variables
echo "$greeting, $user_name!"
echo "The current year is $current_year."Regole chiave per le variabili bash:
- I nomi delle variabili fanno distinzione tra maiuscole e minuscole:
nameeNAMEsono variabili diverse - Non sono ammessi spazi attorno al segno
=quando assegni un valore - Usa
$(command)per la sostituzione di comando e catturare l’output di un comando in una variabile - Racchiudi le variabili tra virgolette doppie (
"$var") per gestire in sicurezza valori che contengono spazi
Come creare una funzione in uno script Bash
In programmazione, le funzioni servono a raggruppare un insieme di istruzioni ripetute — scopri di più sulle funzioni in Python. Scrivere funzioni serve a evitare di ripetere continuamente lo stesso codice e rende anche il codice più leggibile.
Una funzione bash può essere considerata una normale funzione: un insieme di comandi che può essere richiamato più volte. Tuttavia, le funzioni bash sono leggermente più limitate rispetto alla maggior parte dei linguaggi di programmazione (ad esempio, le funzioni bash non consentono di restituire un valore al momento della chiamata).
Prima di creare uno script bash che usa una funzione, diamo un’occhiata alla sintassi per dichiararla. Possiamo definire una funzione scrivendo un nome di funzione, seguito da parentesi e da parentesi graffe per il corpo della funzione — è il modo più comune di scrivere una funzione bash. Ecco come appare nel codice:
# Most common way to write a bash function.
example_function () {
commands
}L’altro modo per formattare una funzione bash è iniziare la riga con la parola chiave riservata function, poi il nome della funzione e le parentesi graffe per il corpo — non servono le parentesi tonde.
# Another way to write a bash function.
function example_function {
commands
}Definire la funzione non ne esegue i comandi. Per invocare una funzione bash, devi chiamarne il nome, come segue:
#!/bin/bash
# A hello world bash function
hello_world () {
echo "Hello World!"
}
# Invoking the hello_world function
hello_worldQui sopra, abbiamo creato una funzione hello_world che stampa “Hello World!” quando lo script bash viene eseguito.
Passaggio di argomenti alle funzioni bash
Gli argomenti sono variabili usate in una specifica funzione. In bash, non possiamo passare argomenti alle funzioni come faresti in linguaggi di alto livello come Python, Julia, ecc. Invece, le funzioni bash hanno i propri argomenti da riga di comando e possiamo passare parametri a una funzione inserendoli dopo la chiamata al nome della funzione — separati da uno spazio se ci sono più argomenti.
In sostanza, gli argomenti della funzione sono trattati come parametri posizionali e si usano variabili della shell ($1, $2, ..., $n) per accedere agli argomenti passati alla funzione.
#!/bin/bash
greet () {
echo "Hello $1 $2"
}
greet "John" "Doe" Nello script bash sopra, abbiamo passato due argomenti, John e Doe, alla nostra funzione greet. Quando lo script bash viene eseguito ora, dovremmo vedere il seguente output:
Hello John DoeUso dei cicli negli script Bash
I cicli ti permettono di ripetere un blocco di comandi più volte. Bash supporta i cicli for e while.
Cicli for
Un ciclo for itera su un elenco di elementi o su un intervallo numerico:
#!/bin/bash
# Loop over a list
for fruit in apple banana cherry; do
echo "I like $fruit"
done
# Loop over a numeric range
for number in {1..5}; do
echo "Number: $number"
doneCicli while
Un ciclo while viene eseguito finché la sua condizione è vera:
#!/bin/bash
count=1
while [ $count -le 5 ]; do
echo "Count: $count"
count=$((count + 1))
doneScrivere istruzioni “if” in Bash
Le istruzioni “if” sono condizioni usate nei linguaggi di programmazione. Se un’affermazione risulta vera, viene eseguita una condizione. Questa funzionalità ci consente di determinare le circostanze in cui un certo pezzo di codice deve essere eseguito.
In bash, iniziamo la condizione con if e la terminiamo con fi (if scritto al contrario). Ecco un esempio di script bash con condizionali if:
#!/bin/bash
read -p "Give me a number: " number
if [ $number -gt 10 ];
then
echo "Your number is greater than 10."
fiNello script bash sopra, si chiede all’utente di fornire un numero. Se il numero fornito dall’utente è maggiore di 10, allora “Your number is greater than 10” verrà stampato nel terminale, altrimenti il programma terminerà. La Figura 3 è un esempio in cui passiamo un numero maggiore di 10.

Figura 3: Uso delle istruzioni “if” negli script Bash
Conclusione
Il bash scripting è una competenza potente per automatizzare task, gestire sistemi e costruire pipeline di dati. In questo tutorial ho coperto i mattoni fondamentali: la riga shebang, la creazione ed esecuzione di script, l’acquisizione di input dell’utente, l’uso di variabili, cicli, funzioni e condizionali.
Per continuare il tuo percorso nel bash scripting, esplora questi prossimi passi:
- Segui il corso Introduction to Bash Scripting per approfondire con esercizi pratici
- Impara a pianificare l’esecuzione automatica degli script usando
cron - Esplora la manipolazione di stringhe, l’I/O su file e la gestione degli errori con i codici di uscita
- Esercitati con script di automazione reali: backup, rotazione dei log e controlli di salute del sistema
- Per portare le tue competenze al livello successivo, ti consiglio il nostro corso Data Processing in Shell
FAQ su Bash Scripting
Che cos’è uno script bash?
Uno script bash è un file di testo semplice che contiene una sequenza di comandi da eseguire per la shell Bash. Per convenzione è salvato con estensione .sh; gli script bash iniziano con una riga shebang (#!/bin/bash) che indica al sistema operativo quale interprete usare. Gli script servono ad automatizzare attività ripetitive, gestire file, eseguire programmi e svolgere amministrazione di sistema.
Come eseguo uno script bash?
Ci sono due modi per eseguire uno script bash:
- Usando il comando bash:
bash script.sh— esegue lo script direttamente senza bisogno di permessi di esecuzione - Rendendolo eseguibile: Esegui una volta
chmod +x script.shper concedere il permesso di esecuzione, poi esegui con./script.sh
Il secondo metodo è l’approccio standard per distribuire ed eseguire script in ambienti di produzione.
Che cos’è la riga shebang in uno script bash?
Lo shebang (#!/bin/bash) è la prima riga di uno script bash. Indica al sistema operativo quale interprete usare per eseguire il file. I caratteri #! ("hash-bang") sono seguiti dal percorso assoluto all’interprete Bash (/bin/bash). Senza shebang, il tuo script può comunque funzionare ma userà la shell attiva in quel momento, causando possibili comportamenti incoerenti tra sistemi.
Qual è la differenza tra bash e shell scripting?
Shell scripting è un termine generico per scrivere script che girano in qualsiasi shell Unix (sh, bash, zsh, ksh, ecc.). Bash scripting si riferisce specificamente agli script scritti per la shell Bash (Bourne Again SHell). Bash è la shell predefinita sulla maggior parte dei sistemi Linux ed estende lo standard POSIX con funzionalità come array, espansione aritmetica e manipolazione avanzata di stringhe. Quando le persone dicono "shell scripting", di solito intendono bash scripting.
Come dichiaro e uso variabili in uno script bash?
Dichiara una variabile assegnando un valore senza spazi attorno al segno =, poi accedi al suo valore anteponendo il nome con $:
name="Alice"
echo "Hello, $name!"Regole chiave: i nomi delle variabili fanno distinzione tra maiuscole e minuscole, niente spazi attorno a = e racchiudi le variabili tra virgolette doppie ("$var") quando il valore può contenere spazi. Usa $(command) per la sostituzione di comando e memorizzare l’output di un comando in una variabile.


Una shell è un tipo di programma che presenta un’interfaccia al sistema operativo. Il nome shell deriva dal fatto che è lo strato più esterno attorno al sistema operativo.
Per gestire l’interazione tra utenti e sistema operativo, la shell richiede un input e poi lo interpreta per il sistema operativo prima di gestire qualsiasi output ricevuto. Questo input può essere fornito tramite un’interfaccia a riga di comando (CLI) o un’interfaccia grafica (GUI), a seconda dell’operazione e del ruolo che il computer assume.
In sostanza, una shell permette agli utenti e ad altri programmi di comunicare direttamente con i componenti di un sistema operativo.
TL;DR
.shche contiene una sequenza di comandi di shell#!/bin/bashbash script.sh, oppure rendilo eseguibile conchmod +x script.shed esegui con./script.shfor/while) e condizionali (if/else)Introduzione al shell scripting
Lo shell scripting è una parte importante della comunicazione con il sistema operativo di un computer ed è una competenza preziosa per sviluppatori, amministratori di sistema e data engineer. Per scripting intendiamo una sequenza di comandi di shell e del sistema operativo scritti e poi salvati in un file: operazioni tipiche eseguite dagli script di shell includono attività come manipolazione di file, esecuzione di programmi e stampa di testo.
Imparare a eseguire questa semplice procedura può far risparmiare agli sviluppatori una quantità significativa di tempo di sviluppo, poiché alcuni comandi non dovranno essere riscritti manualmente ogni volta — è persino possibile pianificare l’esecuzione automatica degli script.
Esistono diverse shell disponibili per gli utenti Unix e Linux. Per il resto di questo tutorial, ci concentreremo specificamente sulla Bourne Again SHell (bash), una versione avanzata della Bourne shell e una delle interfacce a riga di comando più comuni per i sistemi operativi basati su Unix (incluso Linux).
Nuovo alla riga di comando? Inizia con il nostro corso Introduction to Shell per costruire le basi prima di passare al bash scripting.
Che cos’è uno script Bash?
Bash è un’interfaccia a riga di comando Unix responsabile dell’interazione con il sistema operativo del computer. Allo stesso modo in cui i copioni informano gli attori su quali azioni intraprendere, uno script bash dice alla shell bash cosa fare. Quindi, uno script bash è un modo utile per raggruppare comandi e creare un programma.
Qualsiasi comando che potresti eseguire direttamente dalla riga di comando può essere inserito in uno script bash, e ci si può aspettare che compia le stesse azioni di quando è eseguito da riga di comando. In alternativa, qualsiasi comando che inserisci nel tuo script bash può essere eseguito direttamente dalla riga di comando, e il risultato dovrebbe essere lo stesso. In altre parole, se sai come interagire con il tuo computer dalla riga di comando, sai già parecchio sul bash scripting.
Una delle principali differenze è che uno script bash è un file di testo semplice che per convenzione viene salvato con estensione
.sh(possono comunque essere eseguiti anche senza l’estensione.sh).Un’altra particolarità degli script bash è lo “shebang” che si trova sulla prima riga di tutti gli script. In sostanza, lo shebang è un percorso assoluto all’interprete bash, composto dalla combinazione di cancelletto “#” e bang “!” seguiti dal percorso della shell bash. Serve per dire al sistema operativo Linux quale interprete usare per analizzare il file.