dgt_bash03 – Funzioni

Titolo del modulo: dgt_bash03 – Funzioni

Descrizione del modulo:

Questo modulo, “dgt_bash03 – Funzioni”, tratta le funzioni Bash, la caratteristica che permette agli script di crescere senza diventare ingestibili. È rivolto a principianti e utenti di livello intermedio che vogliono capire come funzionano davvero le funzioni Bash: come si definiscono, come ricevono argomenti, cosa restituiscono e come condividono le variabili con il resto dello script.

Qui non scriverete funzioni a mano. Dopo aver studiato la teoria, descriverete alla macchina in linguaggio naturale la funzione che vi serve (“prendi un file e un limite di dimensione, di default 1000 byte, e dimmi se il file lo supera”), e sarà lei a scrivere il Bash. Il vostro compito è leggere quel codice con occhio critico: controllare la sintassi, il quoting, la gestione di $? e delle variabili locali, provarlo sui casi limite e rimandarlo indietro con correzioni precise quando è sbagliato.

Obiettivi del modulo:

  • Comprendere le basi delle funzioni: Imparare cosa sono le funzioni nello scripting Bash e perché sono essenziali per mantenere gli script gestibili.

  • Riconoscere funzioni ben strutturate: Imparare come appare una definizione di funzione chiara e precisa, per poter chiedere funzioni riutilizzabili e manutenibili e riconoscere quando la versione della macchina non è all’altezza.

  • Gestione dei parametri: Imparare come i parametri vengono passati alle funzioni e usati all’interno degli script, per poter specificare esattamente quali input una funzione deve accettare.

  • Valori di ritorno: Esplorare come le funzioni restituiscono valori ed exit status, e come questi guidano il flusso dei dati e le decisioni in uno script.

  • Scope e gestione delle variabili: Comprendere lo scope delle variabili nelle funzioni Bash e come individuare effetti collaterali indesiderati nel codice generato dalla macchina.

Argomenti principali trattati:

  1. Introduzione alle funzioni in Bash
  2. Definizione e importanza
  3. Vantaggi dell’uso delle funzioni negli script

  4. Creare e definire funzioni

  5. Sintassi di base per definire le funzioni
  6. Convenzioni di naming e best practice

  7. Parametri e argomenti delle funzioni

  8. Passaggio di uno o più argomenti
  9. Accesso ai parametri posizionali all’interno di una funzione

  10. Restituire valori dalle funzioni

  11. Usare efficacemente l’istruzione return
  12. Lavorare con variabili speciali come $?

  13. Revisionare le funzioni Bash scritte dalla macchina

Nel corso del modulo richiederete in linguaggio naturale diverse funzioni ed esaminerete ciò che vi viene restituito. Le bozze qui sotto sono tipiche prime risposte: non tutte sono corrette, e capire esattamente cosa non va, e come chiederne la correzione, fa parte dell’esercizio.

  • Esempio 1: funzione di saluto
    Chiedete alla macchina una funzione che riceva un nome come argomento e stampi un saluto personalizzato.

    bash
    greet {
    echo "Hello, $1!"
    }

  • Esempio 2: controllo della dimensione di un file
    Chiedete una funzione che controlli la dimensione di un file e segnali se supera un limite specificato.

    bash
    check_file_size {
    local file=$1
    local max_size=${2:-1000} # Default maximum size is 1000 bytes
    if [[ $stat -c%s "$file" -gt $max_size ]]; then
    echo "File $file exceeds the limit of $max_size bytes."
    else
    echo "File $file is within the size limit."
    fi
    }

  • Esempio 3: funzione di somma
    Chiedete una funzione che calcoli la somma di due numeri.

    bash
    sum {
    local num1=$1
    local num2=$2
    echo $num1 + num2
    }

  • Argomenti avanzati sulle funzioni Bash

  • Funzioni ricorsive
  • Variabili locali e globali

Risultati del modulo:

Al termine di questo modulo saprete come funzionano le funzioni negli script Bash quanto basta per descrivere con precisione alla macchina funzioni modulari e riutilizzabili e per giudicare se il codice che scrive è corretto. Attraverso gli esempi avrete allenato l’occhio a cogliere errori di sintassi, espansioni sbagliate e problemi di scope prima che arrivino in produzione.

Gli studenti possono caricare i propri esercizi nel Progetto Git dell’Academy DevOps & SRE. Per questo modulo, create una cartella con il vostro username come nome nella seguente sottocartella: https://github.com/Garanti-Del-Talento/gdt_academy