Una guida rapida su come creare e chiamare funzioni in Bash.
Una funzione è un blocco di codice riutilizzabile che viene utilizzato per eseguire alcune azioni. Con le funzioni, otteniamo una migliore modularità e un alto grado di riutilizzo del codice.
Bash fornisce alcune funzioni integrate come echo
e read
, ma possiamo anche creare le nostre funzioni.
Creazione di una funzione in Bash
Esistono due modi per creare funzioni in Bash:
Un modo è usare semplicemente il nome della funzione, ad esempio:
functionName(){
// scope of function
}
Versione compatta:
functionName(){ echo "hello"; }
Un altro modo è dichiarare una funzione usando il function
parola chiave:
function functionName {
// scope of function
}
Versione compatta:
function functionName { echo "hello"; }
Nota come non abbiamo bisogno del ()
quando si utilizza il function
parola chiave per creare una funzione.
Punti importanti da notare sulle funzioni Bash:
- Il codice tra parentesi graffe
{}
è il corpo e l'ambito della funzione - Quando chiamiamo una funzione, utilizziamo semplicemente il nome della funzione da qualsiasi punto dello script bash
- La funzione deve essere definita prima di poter essere utilizzata
- Quando si utilizza la versione compatta, l'ultimo comando deve avere un punto e virgola
;
Esempio:
Il codice seguente crea una funzione che stampa "Hello World" sulla console. Il nome della funzione si chiama printHello :
#!/bin/bash
printHello(){
echo "Hello World!"
}
Chiamare una funzione in Bash
Come chiamiamo la funzione sopra? Tutto quello che devi fare nel tuo script bash è scrivere il nome della funzione e verrà chiamata.
Ad esempio:
#!/bin/bash
printHello(){
echo "Hello World!"
}
# Call printHello function from anywhere in the script by writing the name
printHello
Uscita:
"Hello World"
Passaggio di argomenti
La funzione sopra printHello()
non ha parametri. Ogni volta che lo chiamiamo, otteniamo l'output "Hello World". Ma cosa accadrebbe se volessimo creare una funzione più generica? Ad esempio possiamo chiamare la funzione con qualche argomento e stamperà ciò che le inviamo.
Ci sono due modi per farlo.
Per prima cosa possiamo modificare printHello()
funzione per stampare gli argomenti che gli vengono passati:
Ad esempio:
#!/bin/bash
printAny(){
echo "Hello " $1
}
printAny World
printAny DevQa
printAny I love coding!
Uscita:
Hello World
Hello DevQA
Hello I
Nota come la terza istruzione print printAny I love coding!
emesso solo "Ciao, io".
Questo perché la nostra funzione è progettata per accettare solo 1 parametro $1
. La parola "Amo programmare!" è in realtà 3 parametri.
Se volessimo stamparlo tutto dovremmo mettere le virgolette intorno al testo
Ad esempio:
#!/bin/bash
printAny(){
echo "Hello " $1
}
printAny "I love coding!"
Uscita:
Hello I love coding
Un altro esempio, possiamo passare anche in cifre:
#!/bin/bash
add() {
result=$(($1 + $2))
echo "Result is: $result"
}
add 1 2
Uscita:
Result is: 3
Valori di ritorno
Anche le funzioni Bash possono restituire valori.
Ad esempio:
#!/bin/bash
add() {
result=$(($1 + $2))
}
add 1 2
echo "The sum is: "$result
Uscita:
The sum is: 3
Un altro modo per restituire valori da una funzione consiste nell'assegnare il risultato a una variabile che può essere utilizzata come e quando necessario.
Ad esempio:
#!/bin/bash
add () {
local result=$(($1 + $2))
echo "$result"
}
result="$(add 1 2)"
echo "The sum is: "$result
Uscita:
The sum is: 3