Les funcions en Bash són una manera poderosa de reutilitzar codi i organitzar scripts de manera més eficient. En aquest tema, aprendrem com definir i utilitzar funcions en Bash, així com alguns consells per a la seva utilització efectiva.
Continguts
Què és una Funció?
Una funció és un bloc de codi amb un nom específic que es pot cridar des de qualsevol lloc del script. Les funcions permeten dividir el codi en parts més petites i manejables, facilitant la seva lectura i manteniment.
Definició de Funcions
Per definir una funció en Bash, utilitzem la següent sintaxi:
També es pot definir una funció sense la paraula clau function
:
Exemple
O bé:
Crida a Funcions
Per cridar una funció, simplement escrivim el seu nom:
Exemple
Passar Arguments a Funcions
Les funcions en Bash poden rebre arguments, que es passen de la mateixa manera que es passen arguments a un script. Els arguments es poden accedir dins de la funció utilitzant $1
, $2
, etc.
Exemple
En aquest exemple, $1
conté el valor "Anna".
Retornar Valors des de Funcions
Les funcions en Bash poden retornar valors utilitzant la comanda return
. El valor retornat és un codi de sortida (un enter entre 0 i 255). Per retornar altres tipus de valors, podem utilitzar echo
i capturar la sortida de la funció.
Exemple amb return
suma() { local resultat=$(( $1 + $2 )) return $resultat } # Crida a la funció suma 3 4 # Captura del codi de sortida resultat=$? echo "La suma és: $resultat"
Exemple amb echo
suma() { local resultat=$(( $1 + $2 )) echo $resultat } # Crida a la funció i captura de la sortida resultat=$(suma 3 4) echo "La suma és: $resultat"
Exemples Pràctics
Exemple 1: Funció per Calcular el Factorial
factorial() { if [ $1 -le 1 ]; then echo 1 else local temp=$(( $1 - 1 )) local result=$(factorial $temp) echo $(( $1 * result )) fi } # Crida a la funció resultat=$(factorial 5) echo "El factorial de 5 és: $resultat"
Exemple 2: Funció per Comprovar si un Número és Parell
es_parell() { if [ $(( $1 % 2 )) -eq 0 ]; then echo "Sí" else echo "No" fi } # Crida a la funció resultat=$(es_parell 4) echo "El número 4 és parell? $resultat"
Exercicis Pràctics
Exercici 1: Funció per Invertir una Cadena
Escriu una funció anomenada invertir_cadena
que prengui una cadena com a argument i retorni la cadena invertida.
Solució
invertir_cadena() { echo "$1" | rev } # Crida a la funció resultat=$(invertir_cadena "Hola") echo "La cadena invertida és: $resultat"
Exercici 2: Funció per Comprovar si un Número és Primer
Escriu una funció anomenada es_primer
que prengui un número com a argument i retorni "Sí" si el número és primer, i "No" en cas contrari.
Solució
es_primer() { local num=$1 if [ $num -le 1 ]; then echo "No" return fi for (( i=2; i*i<=$num; i++ )); do if [ $(( num % i )) -eq 0 ]; then echo "No" return fi done echo "Sí" } # Crida a la funció resultat=$(es_primer 7) echo "El número 7 és primer? $resultat"
Conclusió
Les funcions en Bash són una eina essencial per escriure scripts més organitzats i reutilitzables. Hem après com definir funcions, passar arguments, retornar valors i hem vist alguns exemples pràctics. Practica amb els exercicis proporcionats per consolidar els teus coneixements i prepara't per al següent tema sobre arrays i arrays associatius.
Curs de Programació en Bash
Mòdul 1: Introducció a Bash
- Què és Bash?
- Configuració del teu Entorn
- Navegació Bàsica per la Línia de Comandes
- Entenent la Shell
Mòdul 2: Comandes Bàsiques de Bash
- Operacions amb Fitxers i Directoris
- Comandes de Processament de Text
- Permisos i Propietat de Fitxers
- Redirecció i Piping
Mòdul 3: Conceptes Bàsics de Scripting
Mòdul 4: Scripting Intermedi
Mòdul 5: Tècniques Avançades de Scripting
- Operacions Avançades amb Fitxers
- Gestió de Processos
- Gestió d'Errors i Depuració
- Expressions Regulars
Mòdul 6: Treballant amb Eines Externes
Mòdul 7: Automatització i Programació
- Treballs Cron
- Automatització de Tasques
- Scripts de Còpia de Seguretat i Restauració
- Monitorització i Registre
Mòdul 8: Millors Pràctiques i Optimització
- Escriure Codi Llegible
- Optimització de Scripts en Bash
- Consideracions de Seguretat
- Control de Versions amb Git