50% di sconto tutti i piani, offerta a tempo limitato. A partire da $2.48/mo
11 min rimanenti
Server e sistema operativo

Funzioni Bash Spiegate: Sintassi, Esempi e Casi d'Uso

Kelly Watson By Kelly Watson 11 min di lettura Aggiornato 14 dic 2025
Illustrazione 3D astratta di blocchi di codice blu luminosi che si assemblano in una struttura modulare, rappresentando le funzioni Bash

Le funzioni Bash raggruppano comandi correlati sotto un unico nome. Quando richiami quel nome, l'intero blocco viene eseguito. Puoi passare argomenti per personalizzare il comportamento e restituire valori per comunicare i risultati. Questo mantiene il tuo codice pulito e facile da mantenere.

Linux domina gli ambienti server in tutto il mondo, quindi padroneggiare le funzioni Bash è più importante che mai. Le funzioni trasformano script disordinati in automazione pulita e riutilizzabile.

Questa guida ti guida dalla sintassi di base ai casi d'uso avanzati. Imparerai come dichiarare funzioni, passare parametri, gestire i valori di ritorno e vedrai dieci esempi pratici che puoi usare nei tuoi script.

Riassunto rapido

  • Le funzioni Bash sono blocchi di codice nominati che puoi riutilizzare in tutti i tuoi script
  • Definisci le funzioni usando function_name() { commands; } sintassi
  • Passa gli argomenti usando $1, $2, $3 parametri posizionali
  • Le funzioni migliorano la leggibilità, la modularità e la manutenibilità del codice
  • Usa return per uscire dalle funzioni e comunicare i codici di stato (0 = successo, diverso da zero = errore)
  • Le funzioni possono essere condivise tra script usando source or export -f
  • Gli esempi pratici includono backup di file, monitoraggio del disco, convalida dell'input e controllo dei servizi

Cos'è lo Script Bash?

Illustrazione 3D di un pergamino digitale con codice Bash luminoso che si scrive da solo, che rappresenta l'automazione dello script Bash.

Lo script Bash è un metodo di automazione dei compiti che utilizza la shell Bash. Funge da interfaccia della riga di comando predefinita per Linux e rimane uno strumento standard su macOS. Uno script Bash è un programma scritto nel linguaggio di scripting Bash, che può essere eseguito in un terminale o come file di script autonomo.

Con L'utilizzo di Linux su desktop sta crescendo costantemente e il sistema operativo che domina gli ambienti server in tutto il mondo, le competenze di scripting Bash sono diventate preziose per i professionisti IT. Il linguaggio si integra bene con strumenti DevOps come Docker, Kubernetes e pipeline CI/CD.

Lo script Bash ti consente di completare compiti da semplici comandi a automazione complessa e amministrazione dei sistemi. Puoi automatizzare compiti ripetitivi, sviluppare script di manutenzione, costruire pipeline di distribuzione, gestire sistemi software e manipolare dati.

Cos'è una Funzione Bash?

Illustrazione digitale futuristica che mostra dati della riga di comando disordinati organizzati da un gate di elaborazione luminoso, che simboleggia come funziona una funzione Bash, con spazio vuoto a sinistra.

Una funzione Bash può essere definita come un insieme di comandi che sono definiti all'interno di uno script Bash o impostati in modo interattivo al prompt dei comandi, a seconda del caso d'uso. Una volta definita, una funzione Bash può essere richiamata più volte all'interno dello script o in altri script, proprio come un comando shell ordinario.

Le funzioni Bash ti permettono di creare blocchi di codice riutilizzabili che possono eseguire operazioni complesse, organizzare il tuo codice e semplificare i tuoi script. Puoi passare argomenti a una funzione Bash e poi utilizzarli all'interno della funzione per eseguire operazioni. Le funzioni Bash restituiscono valori che puoi utilizzare altrove nel tuo script.

e copriremo diversi stili di implementazione specifici, tra cui simple_function per la logica di base, simple_inputs per la gestione degli argomenti e strutture avanzate come fibonnaci_recursion.

Fondamenti delle funzioni Bash sono importanti per qualsiasi amministratore di sistema o ingegnere DevOps che lavora con l'automazione. Le sezioni seguenti trattano ciascuno di questi tipi in dettaglio.

Perché usare le funzioni Bash?

Ingranaggio blu luminoso con simboli di ottimizzazione che guida una macchina di codice, che rappresenta l'efficienza e la velocità ottenute utilizzando le funzioni Bash.

Ora che abbiamo coperto la definizione delle funzioni Bash, esaminiamo i loro principali vantaggi. Questa sezione ti aiuta a capire dove le funzioni sono più utili.

Riutilizzabilità

Crei una funzione Bash e hai uno strumento potente. Puoi scrivere un blocco di codice una sola volta e riutilizzarlo più volte all'interno del tuo script o persino in altri script.

Questo rende il tuo codice più efficiente e ti fa risparmiare tempo eliminando la duplicazione. La manutenzione del codice diventa più semplice perché devi modificare la funzione in un solo posto.

Leggibilità

Gli script complessi possono essere difficili da decifrare. Le funzioni Bash risolvono questo problema dividendo lo script in parti più piccole e gestibili.

Ogni funzione ha uno scopo specifico e un nome descrittivo che spiega il suo ruolo. Questo aiuta te e gli altri a capire e mantenere il codice più facilmente.

Modularità

Le funzioni organizzano il tuo codice. Puoi dividere la logica in moduli più piccoli, il che mantiene la struttura dello script pulita e facile da gestire.

E se hai bisogno di aggiungere una nuova funzione, puoi farlo senza toccare altre parti dello script. Quando è il momento di rimuovere o modificare una funzionalità, il resto dello script rimane intatto.

Parametri delle funzioni Bash

Puoi passare argomenti, o parametri, alle tue funzioni. Questi argomenti permettono alle tue funzioni di adattarsi ed eseguire azioni diverse in base agli input che ricevono.

Questo apre molte possibilità rendendo le tue funzioni più versatili e adattabili. Invece di scrivere codice simile più volte, scrivi una funzione che gestisce input diversi.

Come e dove usare le funzioni Bash?

Diagramma di flusso in vetro 3D che mostra l'esecuzione dello script che si ramifica in un blocco di funzione e ritorna, visualizzando come vengono utilizzate le funzioni Bash nel flusso della logica.

Ora, passiamo a un aspetto più tecnico con la nostra definizione e iniziamo con un breve esempio di come creare funzioni Bash. La sintassi seguente può essere utilizzata in ambienti basati su Unix. Se lavori su Windows, puoi installare Linux Bash su Windows 10 per seguire questi esempi.

Creazione di una funzione Bash

Inizia utilizzando la seguente struttura di comando:

function_name () {

    # i comandi vanno qui

}

 

Una volta creata la funzione, puoi usarla nel tuo codice in qualsiasi momento. Ecco un esempio funzionante:

greet () {

    echo "Ciao, $1!"

}

 

Chiama questa funzione con Saluta il Mondo per restituire "Hello, World!" Il $1 rappresenta il primo argomento passato alla funzione.

Ecco alcuni esempi pratici che puoi usare nei tuoi script:

# Crea un backup di qualsiasi file

backup_file () {

    cp "$1" "$1.bak"

    echo "Backup creato: $1.bak"

}

 

# Verifica se una directory esiste, crea se non esiste

ensure_dir () {

    se [ ! -d "$1" ]; allora

        mkdir -p "$1"

        echo "Directory creata: $1"

    fi

}

 

# Registra messaggi con timestamp

log_message () {

    echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1"

}

 

Definisci queste funzioni Bash personalizzate una volta e chiamale quando necessario durante lo script.

Elementi Essenziali della Sintassi delle Funzioni

Le funzioni si comportano come mini-script all'interno dello script principale, ma condividono la memoria della shell. Tieni presenti questi tre comportamenti specifici quando le scrivi.

Ambito delle Variabili (Locale vs. Globale)

Le variabili dentro le funzioni sono globali per impostazione predefinita. Se definisci my_var="test" all'interno di una funzione, sovrascrive qualsiasi my_var nel tuo script. Usa sempre local per limitare le variabili alla funzione e prevenire effetti indesiderati:

local my_var="value"

Parametri Posizionali

Le funzioni leggono gli argomenti usando le stesse $1, $2, e $@ variabili degli script. Sono locali alla funzione e si azzerano quando la funzione esce. Gli argomenti originali dello script non sono accessibili all'interno della funzione a meno che non li passi esplicitamente.

Valori di Ritorno

Le funzioni Bash non restituiscono dati come Python o JavaScript. Il comando return imposta solo uno stato di uscita (0-255) per indicare successo o fallimento. Per restituire dati effettivi (come una stringa o un calcolo), echo il risultato e catturalo quando chiami la funzione:

result=$(my_function)

I 10 Migliori Esempi di Funzioni Bash Utili

Ora che comprendi le funzioni Bash e come crearle, ecco dieci esempi pratici che puoi aggiungere ai tuoi script. Ogni funzione risolve un problema comune e dimostra la struttura corretta, gli argomenti e i valori di ritorno.

1. Funzione di Backup File

Crea un backup con timestamp di qualsiasi file:

backup_file () {

    file locale="$1"

    local backup="${file}.$(date +%Y%m%d_%H%M%S).bak"

    

    se [ -f "$file" ]; allora

        cp "$file" "$backup"

        echo "Backup creato: $backup"

        return 0

    else

        echo "Errore: File non trovato"

        return 1

    fi

}

 

Utilizzo: backup_file /etc/nginx/nginx.conf

2. Verificatore di Directory

Verifica se una directory esiste e la crea se necessario:

ensure_dir () {

    local dir="$1"

    

    se [ ! -d "$dir" ]; allora

        mkdir -p "$dir"

        echo "Creata: $dir"

    fi

}

 

Utilizzo: ensure_dir /var/log/myapp

3. Logger con timestamp

Aggiunge timestamp ai messaggi di log per il debug:

log_message () {

    locale livello="$1"

    messaggio locale="$2"

    echo "[$(date '+%Y-%m-%d %H:%M:%S')] [$level] $message"

}

 

Utilizzo: log_message "INFO" "Script avviato"

4. Monitor dello spazio su disco

Verifica l'utilizzo del disco e avvisa se supera una soglia:

check_disk_space () {

    soglia locale="${1:-80}"

    local usage=$(df / | tail -1 | awk '{print $5}' | tr -d '%')

    

    if [ "$usage" -gt "$threshold" ]; then

        echo "Avviso: Utilizzo disco al ${usage}%"

        return 1

    fi

    return 0

}

 

Utilizzo: check_disk_space 90

5. Validatore di input

Valida che l'input dell'utente non sia vuoto:

validate_input () {

    input locale="$1"

    nome locale="$2"

    

    se [ -z "$input" ]; allora

        echo "Errore: $name non può essere vuoto"

        return 1

    fi

    return 0

}

 

Utilizzo: convalida_input "$username" "Nome utente"

6. Verificatore dello stato dei servizi

Verifica se un servizio è in esecuzione e riporta lo stato:

check_service () {

    servizio locale="$1"

    

    if systemctl is-active –quiet "$service"; then

        echo "$service è in esecuzione"

        return 0

    else

        echo "$service non è in esecuzione"

        return 1

    fi

}

 

Utilizzo: check_service nginx

7. Estrattore di estensioni file

Estrae l'estensione da un nome file:

get_extension () {

    nome file locale="$1"

    echo "${filename##*.}"

}

 

Utilizzo: ext=$(get_extension "document.pdf")

8. Trimmer per stringhe

Rimuove gli spazi vuoti all'inizio e alla fine delle stringhe:

trim_string () {

    local str="$1"

    str="${str#"${str%%[![:space:]]*}"}"

    str="${str%"${str##*[![:space:]]}"}"

    echo "$str"

}

 

Utilizzo: clean=$(trim_string " hello world ")

9. Archiviatore di file sicuro

Sposta un file in una directory personalizzata $HOME/.trash invece di eliminarlo definitivamente. Aggiunge un timestamp al nome del file per evitare di sovrascrivere i backup precedenti.

safe_remove() {

    file locale="$1"

    local trash="$HOME/.trash"

    # Aggiungi timestamp per evitare di sovrascrivere file esistenti

    local new_name="$(basename "$file")_$(date +%s)"

    

    mkdir -p "$trash"

 

    se [ -e "$file" ]; allora

        sposta "$file" "$trash/$new_name"

        echo "Spostato in archivio: $file -> $trash/$new_name"

    else

        echo "Errore: $file non trovato"

        return 1

    fi

}

 

Utilizzo: safe_remove old_script.sh

 

10. Relatore dello Stato

Illustra il meccanismo di ritorno della funzione Bash per la gestione degli errori. Il valore di ritorno della funzione Bash indica successo (0) o errore (valore diverso da zero):

process_data () {

    file locale="$1"

    

    se [ ! -f "$file" ]; allora

        return 1

    fi

    

    # Elabora il file

    cat "$file" | wc -l

    return 0

}

 

# Controlla il valore di ritorno

elabora_dati "data.txt"

if [ $? -eq 0 ]; then

    echo "Elaborazione completata"

else

    echo "Elaborazione non riuscita"

fi

 

Il $? la variabile cattura lo stato di uscita dell'ultimo comando o della chiamata di funzione.

Funzione Scopo Caratteristica Principale
backup_file Creare backup dei file Denominazione con timestamp
ensure_dir Gestione directory Crea se mancante
log_message Accesso Prefisso timestamp
check_disk_space Monitoraggio del sistema Avvisi di soglia
validate_input Convalida dell'input Controllo di stringa vuota
check_service Monitoraggio del servizio Integrazione Systemd
get_extension Analisi delle stringhe Espansione parametri
trim_string Pulizia stringa Rimozione spazi vuoti
safe_remove Eliminazione sicura Cartella Cestino
process_data Gestione degli errori Valori restituiti

Eseguire funzioni Bash su VPS

Le funzioni Bash diventano potenti quando eseguite in un ambiente server dedicato. Il nostro Linux VPS ti dà accesso root completo per personalizzare il tuo ambiente shell, creare librerie di funzioni a livello di sistema e automatizzare le attività di gestione del server senza limitazioni.

Con VPS, puoi memorizzare funzioni riutilizzabili in /etc/profile.d/ per tutti gli utenti, pianificare script basati su funzioni tramite cron job e creare pipeline di automazione per il deployment e la manutenzione. Offriamo server in 12 location globali con velocità di rete fino a 40 Gbps e memoria DDR5, il che significa esecuzione di script più veloce e elaborazione dati più fluida.

Questo livello di controllo rende VPS ideale per chiunque sia serio riguardo lo shell scripting e l'automazione di sistema.

Conclusione

Le funzioni Bash sono essenziali per creare script modulari e riutilizzabili. Ti permettono di raggruppare comandi correlati e incapsulare logica complessa, rendendo il tuo codice più leggibile e facile da mantenere. Se gestisci infrastrutture cloud, automatizzi pipeline di deployment o esegui compiti ordinari di amministrazione del sistema, le funzioni mantengono i tuoi script organizzati ed efficienti.

In questo articolo abbiamo coperto le basi delle funzioni Bash, incluso come definirle e richiamarle, dieci esempi pratici di funzioni e casi d'uso comuni per aiutarti a iniziare i tuoi progetti di automazione.

Unite a strutture di controllo come Istruzione if di Bash, le funzioni ti forniscono i blocchi di costruzione per un'automazione potente. Usando le funzioni Bash nei tuoi script, puoi scrivere codice più pulito e modulare, facile da comprendere e mantenere.

Domande frequenti

Le funzioni Bash possono avere variabili locali?

Sì. Le funzioni Bash possono avere variabili locali usando la parola chiave local. Questo limita l'ambito della variabile alla funzione, impedendo che influisca su variabili con lo stesso nome al di fuori della funzione.

Le funzioni Bash possono essere ricorsive?

Sì, le funzioni Bash possono essere ricorsive. Bash ha una dimensione dello stack di chiamate predefinita relativamente piccola, quindi a seconda delle funzioni ricorsive che hai in mente, potrebbe essere necessario aumentarla usando il comando ulimit -s prima dell'esecuzione.

Posso usare le funzioni Bash in altri script?

Sì, puoi condividere funzioni Bash tra script usando il comando source (o la sua forma breve .). Eseguendo il source di un file contenente le tue definizioni di funzioni, rendi disponibili quelle funzioni nello script che le richiama. Per i processi figlio, usa export -f function_name per rendere la funzione accessibile.

Posso usare le funzioni Bash nelle pipeline?

Sì, ma richiede passaggi specifici per comandi esterni. All'interno di uno script, puoi instradare dati direttamente a una funzione (ad esempio, cat file | my_function). Tuttavia, comandi come xargs o find -exec vengono eseguiti in un nuovo ambiente. Per usare una funzione lì, devi esportarla (export -f my_func) e poi invocare esplicitamente Bash (ad esempio, xargs bash -c 'my_func "$@"').

Che cos'è una funzione di shell script?

Una funzione di shell script è un blocco di codice definito all'interno di uno script di shell che serve a uno scopo specifico e può essere richiamato da varie parti dello script. Le funzioni offrono grande valore in termini di modularità del codice, migliore riutilizzabilità e manutenzione più facile. Nel contesto degli script Bash, le funzioni sono incapsulate nello script generale.

Condividi

Altro dal blog

Continua a leggere.

Le migliori app self-hosted che puoi eseguire con Cosmos Cloud: immagine di copertina con pannelli di app intorno a una dashboard Cosmos.
Server e sistema operativo

Le migliori app self-hosted che puoi eseguire con Cosmos Cloud: file, media, password, automazione e altro!

Dopo aver configurato Cosmos Cloud e voler vedere quali app si abbinano bene, oppure non hai ancora deciso su Cosmos e vuoi semplicemente scoprire quanto bene si adatta al tuo flusso di lavoro

Nick ArgentoNick Argento lettura di 16 minuti
Portainer vs Cosmos Cloud per la gestione di app Docker: copertina con diagramma di configurazione ibrida e diagramma di operazioni neon rispetto ai blocchi di accesso.
Server e sistema operativo

Portainer vs Cosmos Cloud: quale scegliere per la gestione di app Docker

Se conosci già Docker e vuoi semplicemente un modo più pulito per eseguire uno stack di app in crescita, ecco la risposta breve a Portainer vs Cosmos Cloud. Portainer è la scelta più forte per

Nick ArgentoNick Argento 14 minuti di lettura
Cosmos Cloud vs CasaOS vs Umbrel: grafica di confronto che mostra tre percorsi self-hosted all'interno di un'astrazione unica di rete cloud.
Server e sistema operativo

Cosmos Cloud vs CasaOS vs Umbrel: quale piattaforma self-hosted si adatta al tuo setup?

La risposta breve è che CasaOS è ancora il punto di partenza più semplice, Umbrel ha l'aspetto più curato e pulito, e Cosmos Cloud ha più senso quando vuoi un controllo più stretto sui domini

Nick ArgentoNick Argento 11 min di lettura

Pronto per il deployment? A partire da $2,48/mese.

Cloud indipendente, dal 2008. AMD EPYC, NVMe, 40 Gbps. Rimborso entro 14 giorni.