4. Depuración de shell-scripts

Si bien la programación de shell-scripts no se puede depurar fácilmente, los shells suelen ofrecer algunos mecanismos en este aspecto. En concreto, tanto bash como dash ofrecen los siguientes argumentos, que pueden usarse simultáneamente:

-x

Traza: expande cada orden simple, e imprime por pantalla la orden con sus argumentos, y a continuación su salida.

-v

Verbose: Imprime en pantalla cada elemento completo del script (estructura de control, …) y a continuación su salida.

También es posible depurar sólo parte del script insertando en él los siguientes comandos (pueden usarse igualmente en la propia línea de comandos):

set -x

set –xv

Activa las trazas/verbose. Ubicarlo justo antes del trozo del script que se desea depurar.

set +x

set +xv

Desactiva las trazas/verbose. Ubicarlo justo después del trozo del script que se desea depurar.

TAREAS

  1. Mire el contenido del siguiente script en su sistema y compruebe que tiene el permiso de ejecución general:

    script_depuracion.sh
    #!/bin/sh
    
    echo Hola
    if true; then
         echo hola2
         ls /
    fi
    
  2. Invoque dicho script con las siguientes opciones de depuración y analice la salida:

    /bin/bash     script_depuracion.sh
    /bin/bash -x  script_depuracion.sh
    /bin/bash -v  script_depuracion.sh
    /bin/bash -xv script_depuracion.sh
    /bin/dash -x  script_depuracion.sh
    /bin/dash -v  script_depuracion.sh
    /bin/dash -xv script_depuracion.sh
    
  3. Modifique el script para que tenga el siguiente contenido:

    script_depuracion2.sh
    #!/bin/sh
    
    echo Hola
    set -xv
    if true; then
         echo hola2
         ls /
    fi
    set +xv
    
  4. Invoque dicho script con los siguientes comandos y analice la salida:

    script_depuracion2.sh
    /bin/dash script_depuracion2.sh
    /bin/bash script_depuracion2.sh