Google
Web dns.bdat.net
next up previous contents
Next: Sentencia while Up: Estructura de control Previous: Estructura de control   Índice General

Sentencia if

La shell dispone de la sentencia if de bifurcación del flujo de ejecución de un programa similar a cualquier otro lenguaje de programación. La forma más simple de esta sentencia es:

if   lista_órdenes
then
   lista_órdenes
fi

fi, que es if alrevés, indica donde termina el if.

En la parte reservada para la condición de la sentencia if, aparece una lista de órdenes separados por ";". Cada uno de estos mandatos es ejecutado en el orden en el que aparecen. La condición para evaluar por if tomará el valor de salida del último mandato ejecutado. Si la última orden ha terminado correctamente, sin condición de error, se ejecutará la lista de órdenes que hay tras then. Si esta órden ha fallado debido a un error, la ejecución continúa tras el if.

Como condición se puede poner cualquier mandato que interese, pero lo más habitual es utilizar diferentes formas de la orden test. Por ejemplo:

if [ -f mifichero ]
then
echo "mifichero existe"
fi

Pero también podemos poner:

if grep body index.html
then
echo "he encontrado la cadena body en index.html"
fi

Como en cualquier lenguaje de programación también podemos definir las acciones que se tieenen que ejecutar en el caso de que la condición resulte falsa:

if lista_órdenes
then
        lista_órdenes
else
        lista_órdenes
fi

Por ejemplo:

if [ -f "$1" ] then
pr $1
else
echo "$1 no es un fichero regular"
fi

Cuando queremos comprobar una condición cuando entramos en el else, es decir, si tenemos else if es posible utilizar elif. Vemos un ejemplo:

if [ -f "$1" ]
then
cat $1
elif [ -d "$1" ]
then
ls $1/*
else
echo "$1 no es ni fichero ni directorio"
fi

next up previous contents
Next: Sentencia while Up: Estructura de control Previous: Estructura de control   Índice General
Pedro Pablo 2001-12-14