En aquest tema, aprendrem com gestionar errors i depurar scripts en Bash. La gestió d'errors i la depuració són habilitats essencials per a qualsevol programador, ja que permeten identificar i corregir problemes en el codi de manera eficient.

Conceptes Clau

  1. Gestió d'Errors:

    • Captura d'errors
    • Tractament d'errors
    • Sortida d'errors
  2. Depuració:

    • Utilització de set per a la depuració
    • Comandes de depuració
    • Eines de depuració

Gestió d'Errors

Captura d'Errors

En Bash, podem capturar errors utilitzant el codi de sortida de les comandes. Cada comanda retorna un codi de sortida (exit status) que indica si s'ha executat correctament o no. Un codi de sortida de 0 indica èxit, mentre que qualsevol altre valor indica un error.

#!/bin/bash

mkdir /directori/inexistent
if [ $? -ne 0 ]; then
    echo "Error: No s'ha pogut crear el directori."
fi

Tractament d'Errors

Podem utilitzar condicions per tractar errors i prendre accions correctives.

#!/bin/bash

fitxer="dades.txt"

if [ ! -f "$fitxer" ]; then
    echo "Error: El fitxer $fitxer no existeix."
    exit 1
fi

# Processar el fitxer

Sortida d'Errors

Podem utilitzar la comanda exit per sortir d'un script amb un codi de sortida específic.

#!/bin/bash

comanda_critica
if [ $? -ne 0 ]; then
    echo "Error: La comanda crítica ha fallat."
    exit 1
fi

echo "Comanda executada correctament."

Depuració

Utilització de set per a la Depuració

La comanda set ens permet activar opcions de depuració en Bash.

  • set -x: Mostra cada comanda abans d'executar-la.
  • set -e: Fa que l'script surti immediatament si una comanda retorna un codi de sortida diferent de 0.
#!/bin/bash

set -x  # Activar mode de depuració

echo "Això és una prova."
ls /directori/inexistent

set +x  # Desactivar mode de depuració

Comandes de Depuració

  • echo: Utilitzat per imprimir missatges de depuració.
  • trap: Captura senyals i errors.
#!/bin/bash

trap 'echo "Error a la línia $LINENO"' ERR

comanda_critica

Eines de Depuració

  • bash -x script.sh: Executa l'script en mode de depuració.
  • bash -n script.sh: Comprova la sintaxi de l'script sense executar-lo.

Exercicis Pràctics

Exercici 1: Captura d'Errors

Escriu un script que intenti crear un directori i capturi l'error si el directori ja existeix.

#!/bin/bash

directori="nou_directori"

mkdir "$directori"
if [ $? -ne 0 ]; then
    echo "Error: El directori $directori ja existeix."
fi

Exercici 2: Depuració amb set

Escriu un script que utilitzi set -x per mostrar cada comanda abans d'executar-la.

#!/bin/bash

set -x

echo "Iniciant script..."
ls /directori/inexistent
echo "Finalitzant script..."

set +x

Exercici 3: Utilització de trap

Escriu un script que utilitzi trap per capturar errors i mostrar un missatge d'error amb el número de línia.

#!/bin/bash

trap 'echo "Error a la línia $LINENO"' ERR

comanda_critica

Resum

En aquesta secció, hem après com gestionar errors i depurar scripts en Bash. Hem vist com capturar errors utilitzant codis de sortida, com tractar errors amb condicions i com utilitzar la comanda exit per sortir d'un script amb un codi de sortida específic. També hem explorat tècniques de depuració utilitzant set, comandes de depuració com echo i trap, i eines de depuració com bash -x i bash -n. Aquests coneixements ens permetran escriure scripts més robustos i eficients.

© Copyright 2024. Tots els drets reservats