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:

function nom_de_la_funció {
    # Codi de la funció
}

També es pot definir una funció sense la paraula clau function:

nom_de_la_funció() {
    # Codi de la funció
}

Exemple

function saluda {
    echo "Hola, món!"
}

O bé:

saluda() {
    echo "Hola, món!"
}

Crida a Funcions

Per cridar una funció, simplement escrivim el seu nom:

saluda

Exemple

#!/bin/bash

saluda() {
    echo "Hola, món!"
}

# Crida a la funció
saluda

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

diu_hola() {
    echo "Hola, $1!"
}

# Crida a la funció amb un argument
diu_hola "Anna"

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.

© Copyright 2024. Tots els drets reservats