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
-
Gestió d'Errors:
- Captura d'errors
- Tractament d'errors
- Sortida d'errors
-
Depuració:
- Utilització de
set
per a la depuració - Comandes de depuració
- Eines de depuració
- Utilització de
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 de0
.
#!/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.
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.
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.
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