systemadmin.es » Script » Como hacer debug de un shell script

Como hacer debug de un shell script

Al hacer shell scripts todos nos hemos encontrado que no sabemos que esta pasando en el script que hace que no funcione. Evidentemente siempre tenemos la opción de los echos, pero también podemos usar el set para ver paso a paso que se esta ejecutando.

Vamos a suponer el siguiente script como ejemplo:

#!/bin/bash

set -v

if [ $1 -ne "0" ];
then
	echo a;
else
	echo b;
fi

if [ $1 -ne "3" ];
then
        echo c;
else
        echo d;
fi

Para ver que ocurre en el script podemos usar set con las opciones -xv:

  • Mediante -x podemos ver la expansión de los comando que se ejecuten, por ejemplo:
    # ./ejemplo 0
    + '[' 0 -ne 0 ']'
    + echo b
    b
    + '[' 0 -ne 3 ']'
    + echo c
    c
    
  • Mediante -v podemos ver el trozo de script leído hasta cada punto de ejecución, por ejemplo:
    # ./ejemplo 0
    
    if [ $1 -ne "0" ];
    then
    	echo a;
    else
    	echo b;
    fi
    b
    
    if [ $1 -ne "3" ];
    then
            echo c;
    else
            echo d;
    fi
    c
    

Podemos combinar las dos opciones y tendremos una salida similar a la siguiente:

# ./ejemplo 2

if [ $1 -ne "0" ];
then
	echo a;
else
	echo b;
fi
+ '[' 2 -ne 0 ']'
+ echo a
a

if [ $1 -ne "3" ];
then
        echo c;
else
        echo d;
fi
+ '[' 2 -ne 3 ']'
+ echo c
c

De esta forma va a resultar mucho más sencillo ver que esta ocurriendo en un script

Relacionados

Imprimir Imprimir

2 comments to “Como hacer debug de un shell script”

  1. Yo lo ejecuto sin modificar el código con la orden: sh -vx script.sh

    ——
    Gracias por el blog.

  2. Yo siempre lo he usado modificando el script, pero tal como dices desde la shell es mucho más cómodo. Muchas gracias!!!

    Muchas gracias a ti por seguirlo!

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>