Supponiamo che tu stia lavorando su uno script bash complesso per automatizzare una serie di attività sul tuo sistema Linux. Noti che man mano che cresce, ci sono alcune parti dello script in cui gli stessi blocchi di codice vengono ripetuti più volte. Per questo, puoi racchiudere il pezzo ripetuto all’interno di un blocco noto come “funzione” e riutilizzarlo, rendendo il codice complessivo più snello e organizzato. In questo articolo discuteremo cos’è una funzione in bash e come usarla per automatizzare le attività di Linux.
Le funzioni bash sono blocchi di codice riutilizzabili in uno script bash che possono essere raggruppati e nominati per evitare di scrivere ripetutamente lo stesso codice. Proprio come altri linguaggi di programmazione, hai la possibilità di utilizzare le funzioni nei tuoi script bash. Le funzioni ti aiutano a organizzare l’intero script in moduli più piccoli, rendendo il codice più leggibile, facile da eseguire il debug e riutilizzabile. In altre parole, le funzioni sono come uno script all’interno di uno script.
Ora che hai un’idea di base di cosa sono le funzioni bash, vediamo come definirle per rendere il nostro flusso di lavoro Linux molto più semplice. La sintassi di base per definire le funzioni bash è:
<function_name>(){
<statements_to_execute>
}
Puoi anche utilizzare la versione a riga singola della sintassi precedente:
<function_name>() { <statements_to_execute>; }
Alcuni punti da ricordare sulla definizione delle funzioni bash includono:
Vediamo un esempio base basato sulla sintassi sopra. Inizia creando un nuovo file negli editor di testo Linux e scrivi questo codice al suo interno:
#!/bin/bash
hello_world () {
echo 'hello, world'
}
hello_world
Si consiglia di salvare il file con lo stesso nome del nome della funzione. Per richiamare il file, scrivi semplicemente il nome della funzione all’interno del prompt della shell e premi invio.
./hello_world
A volte potrebbe essere necessario lavorare con alcuni valori personalizzati o lavorare con i valori di input dell’utente con le funzioni che hai creato. Per passare argomenti alla funzione bash, menzionarli semplicemente dopo il nome della funzione dopo aver invocato la funzione come variabili della shell Linux. Per quanto riguarda l’utilizzo degli argomenti all’interno della funzione, posizionateli con $<argument_position>
Piace $1
, $2
sotto e così via. Per esempio:
#!/bin/bash
greeting () {
echo "Hello $1"
}
greeting "Beebom"
Per invocare, utilizzare il seguente comando:
./greeting.sh
A differenza di altri linguaggi di programmazione, in bash non è possibile restituire valori dalla funzione. Puoi inviare lo stato di ritorno dalla funzione bash al chiamante solo con qualsiasi numero compreso tra 0 e 255, dove 0 rappresenta il successo e qualsiasi altro numero come un errore/fallimento del sistema Linux. Ad esempio, copia questo codice nell’editor nano in Linux.
#!/bin/bash
greeting () {
echo "Hello $1"
return 10
}
greeting "Beebom"
echo The return value is $?
Quando chiami lo script precedente, otterrai un output simile insieme al valore 10, che indica che si è verificato un errore o un errore.
L’ambito di una variabile indica parti di codice in cui le variabili possono essere utilizzate in bash. L’ambito può essere suddiviso principalmente in due parti: ambito globale e ambito locale. Con l’ambito globale, la variabile può essere utilizzata ovunque, incluso direttamente nel prompt della shell. L’ambito locale significa che la variabile non può essere utilizzata all’esterno del blocco in cui è dichiarata.
Ogni variabile che dichiari all’interno di una funzione bash con la parola chiave “local” rientrerà nell’ambito locale del corpo della funzione e non potrà essere utilizzata al di fuori del corpo della funzione. Allo stesso modo, è possibile accedere alle variabili globali da qualsiasi punto dello script bash senza alcuna restrizione. Il seguente esempio lo renderà chiaro:
#!/bin/bash
global_var="I am global"
function display_global() {
echo "Inside function: $global_var"
local local_var="I am local"
echo "Inside function: $local_var"
}
display_global
echo "Outside function: $global_var"
echo "Outside function: $local_var"
Dopo aver eseguito lo script precedente, vedrai il seguente output:
Le funzioni Bash sono strumenti potenti che possono migliorare la struttura, la manutenibilità e la riusabilità degli script bash in Linux. Segui queste migliori pratiche per utilizzare le funzioni in bash che possono migliorare notevolmente il nostro flusso di lavoro: