Funzioni negli script Bash
Organizzi il codice con le funzioni, favorendone il riutilizzo e rendendo gli script più chiari e semplici da mantenere.
Funzioni negli script Bash è una lezione Linux Command Line & Bash Scripting Mastery gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Linux Command Line & Bash Scripting Mastery, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Linux Command Line & Bash Scripting Mastery include 4 lezioni in totale.
Cosa sono le funzioni Bash?
Nello scripting Bash, una funzione è un blocco di codice che esegue un’attività specifica. La si può considerare come un mini-script all’interno dello script principale.
Le funzioni aiutano a:
- Riutilizzare il codice: scrivere una parte della logica una sola volta e richiamarla più volte.
- Organizzare gli script: suddividere le attività complesse in unità più piccole e gestibili.
- Migliorare la leggibilità: rendere lo script più facile da comprendere e mantenere.
Definizione di una funzione semplice
In Bash esistono due modi comuni per definire una funzione. Entrambi producono lo stesso risultato. Il primo è la sintassi più comune.
Provi a eseguire questo esempio. Definisce alcune funzioni, ma non le richiama ancora!
#!/bin/bash
# Method 1: The most common way
my_first_func () {
echo "Hello from my_first_func!"
}
# Method 2: Using the 'function' keyword
function my_second_func {
echo "Hello from my_second_func!"
}
echo "Functions defined, but not called."Richiamo delle funzioni
La definizione di una funzione non ne comporta l’esecuzione. Per eseguire il codice contenuto in una funzione, basta richiamarla usando il suo nome, proprio come qualsiasi altro comando.
Osservi come richiamiamo my_function dopo averla definita:
#!/bin/bash
my_function () {
echo "This message is from inside the function."
}
echo "Script started."
my_function # Call the function here
echo "Script finished."Variabili locali nelle funzioni
Per impostazione predefinita, le variabili definite all’interno di una funzione Bash sono globali, ovvero sono accessibili e modificabili da qualsiasi punto dello script.
Per evitare effetti collaterali indesiderati e mantenere isolate le funzioni, usi la parola chiave local per dichiarare una variabile come locale. Le variabili locali esistono solo all’interno della funzione.
#!/bin/bash
global_message="I'm a global message"
my_function () {
local func_message="I'm a local message"
global_message="I've been changed by the function!"
echo "Inside func: $func_message"
echo "Inside func: $global_message"
}
echo "Before func: $global_message"
my_function
echo "After func: $global_message"
echo "After func: $func_message (This will be empty)"Passaggio di argomenti alle funzioni
Può passare informazioni alle funzioni usando gli argomenti, proprio come con i normali comandi della shell. All’interno della funzione, questi argomenti sono accessibili tramite variabili speciali:
$1,$2,$3...: singoli argomenti$#: numero totale di argomenti$@: tutti gli argomenti come stringhe separate
#!/bin/bash
greet_user () {
echo "Hello, $1!"
echo "You are $2 years old."
echo "Total arguments received: $#"
echo "All arguments: $@"
}
echo "Calling greet_user with two arguments:"
greet_user "Alice" 30
echo "\nCalling greet_user with one argument:"
greet_user "Bob"Stato di uscita della funzione (return)
Una funzione, come qualsiasi comando, restituisce uno stato di uscita. Per convenzione, 0 indica il successo, mentre qualsiasi valore diverso da zero indica un errore.
Per impostare questo stato di uscita si usa la parola chiave return. È quindi possibile verificarlo usando la variabile speciale $? subito dopo il richiamo della funzione.
#!/bin/bash
check_age () {
local age=$1
if [ "$age" -ge 18 ]; then
return 0 # Success: 18 or older
else
return 1 # Failure: under 18
fi
}
check_age 25
echo "Exit status for 25: $?"
check_age 16
echo "Exit status for 16: $?"
if check_age 20; then
echo "User is an adult."
else
echo "User is a minor."
fiAcquisizione dell’output di una funzione
Mentre return invia uno stato di uscita, se si desidera che una funzione produca un «valore» da memorizzare in una variabile, la funzione deve inviare tale valore all’output standard con echo.
È quindi possibile acquisire questo output usando la sostituzione di comando, racchiudendo il richiamo della funzione in $(...).
#!/bin/bash
get_full_name () {
local first_name=$1
local last_name=$2
echo "$first_name $last_name" # Echo the full name
}
name="$(get_full_name "John" "Doe")"
echo "Full name captured: $name"
calculate_area () {
local length=$1
local width=$2
echo $((length * width))
}
area=$(calculate_area 10 5)
echo "Calculated area: $area"Esempio pratico: un logger
Ecco un esempio pratico di funzione riutilizzabile: un semplice logger. Questa funzione può essere richiamata in qualsiasi punto dello script per stampare messaggi con un timestamp, semplificando il debug e il monitoraggio.
#!/bin/bash
log_message () {
local timestamp=$(date +"%Y-%m-%d %H:%M:%S")
local message="$1"
echo "[$timestamp] $message"
}
log_message "Script execution started."
sleep 1 # Simulate some work
log_message "Processing user data..."
sleep 1
log_message "Operation completed successfully."Buone pratiche per le funzioni
Per scrivere script chiari e facili da mantenere usando le funzioni, consideri questi suggerimenti:
- Mantenga la semplicità: ogni funzione dovrebbe svolgere bene una sola attività.
- Scelga nomi significativi: usi nomi descrittivi come
validate_inputocreate_backup. - Usi
local: usi semprelocalper le variabili all’interno delle funzioni, così da evitare conflitti. - Aggiunga commenti: spieghi cosa fa la funzione, quali sono i suoi argomenti e cosa restituisce.
- Convalidi l’input: se una funzione richiede argomenti specifici, li verifichi.
Verifica degli argomenti delle funzioni
Verifichi la Sua comprensione del passaggio degli argomenti alle funzioni Bash e del modo in cui vi si accede.
Funzioni: riepilogo e prossimi passi
Ottimo lavoro! Ha acquisito padronanza delle funzioni Bash.
Abbiamo visto:
- la definizione e il richiamo delle funzioni;
- l’uso di
localper l’ambito delle variabili; - il passaggio degli argomenti con
$1,$#,$@; - l’impostazione dello stato di uscita con
return; - l’acquisizione dell’output con
echoe la sostituzione di comando.
Le funzioni sono fondamentali per scrivere script Bash modulari, riutilizzabili e facili da mantenere. Continui a esercitarsi per rendere i Suoi script più potenti e organizzati!
Domande Frequenti
La lezione «Funzioni negli script Bash» è gratuita?
Sì — il testo completo di «Funzioni negli script Bash» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Linux Command Line & Bash Scripting Mastery, passa a CoddyKit PRO. Il corso Linux Command Line & Bash Scripting Mastery include 4 lezioni in totale.
Cosa imparerò in «Funzioni negli script Bash»?
Organizzi il codice con le funzioni, favorendone il riutilizzo e rendendo gli script più chiari e semplici da mantenere. Eserciti Linux Command Line & Bash Scripting Mastery con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Linux Command Line & Bash Scripting Mastery?
Non è richiesta alcuna esperienza precedente. Linux Command Line & Bash Scripting Mastery su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Funzioni negli script Bash»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Linux Command Line & Bash Scripting Mastery?
Sì. Ogni lezione Linux Command Line & Bash Scripting Mastery include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Strutture iterative (for, while)
- Funzioni negli script Bash
- Argomenti e opzioni degli script ($@, $#, getopts)
- L'istruzione case e il pattern matching