2.4.- Localización y gestión de errores

Localizar y solucionar los errores de los script shell suele ser bastante sencillo, pero no existe herramientas de ayuda específicas. Vamos a resumir en esta sección rápidamente los métodos más comunes.

Cuando tiene lugar un error, la shell suele mostrar el número de la línea que contiene el error. Si el error no es aparente a simple vista, puede añadir alguna sentencia echo extra para mostrar los contenidos de las variables y los fragmentos de código  de prueba escribiéndolos simplemente en la shell interactivamente.

Como los script se interpretan, no hay una compilación para modificar y volver a probar el script. El modo principal para trazar los errores más complicados es configurar varias opciones de shell. Para hacerlo, puede usar las opciones de línea de comando tras invocar a la shell o puede usar el comando set. La siguiente tabla resume todas las opciones:

gestion_errores_tablaPuede activar los indicadores de opción set usando -o, y desactivarlo usando +o, y de igual modo para las fórmulas abreviadas. Puede conseguir una pista de ejecución sencilla usando la opción xtrace. Para una comprobación inicial, puede usar la opción de línea de comando, pero para una localización de errores más exacta, debe introducir los indicadores xtrace (activando una pista de ejecución) en el script alrededor del código problemático. La pista de ejecución hace que la shell muestre todas las líneas del script, con las variables expandidas, antes de ejecutar la línea.

Use el siguiente comando para activar xtrace:

set -o xtrace

set_xtrace_onUse este comando para desactivar xtrace de nuevo:

set +o xtrace

set_xtrace_offEl nivel de expansión lo define (por defecto) el número de señales + que se encuentra al principio de cada línea. Puede modificar el símbolo + por algo más significativo configurando la variable shell PS4 en su archivo de configuración shell.

En la shell, también puede descubrir el estado del programa, exista donde exista, reteniendo la señal EXIT mediante la colocación, al principio del script, una línea similar a la que mostramos en el siguiente ejemplo:

trap `echo Existing: critical variable = $critical_variable' EXIT

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.