next up previous contents
Next: El comando while Up: Programación en shell Previous: Códigos de salida   Índice General

El comando if

Ya vimos un ejemplo sencillo utilizando if, que a su vez puede ser de gran utilidad. Ya hablamos de la equivalencia entre el «;» y el «Enter» pero hay veces que desapercibido el detalle de que if y then están en diferentes lineas por lo que:

# if COMANDO then COMANDO fi

Este último ejemplo va a dar error de sintaxis. La forma correcta de expresar es:

# if COMANDO; then COMANDO ; fi

o bien:

# if COMANDO
> then COMANDO
> fi

Esta programación se puede ir realizando «en línea» o sea, en una consola o terminal tipear cualquiera de estos ejemplo (siempre que existan los comandos).

Muchas veces es necesario hacer comparaciones o comprobaciones para tomar decisiones. Por ejemplo ``Si el usuario no posee el archivo  /.configuracion con la configuración por defecto'' o bien ``Si el numero de archivos es mayor a 20 escribir no se puede transferir''

Existe el comando test para hacer estas evaluaciones y en base al resultado, su código de error de test será 0 u otro número. Por ejemplo, para saber si un archivo .configuracion existe en el home del usuario el comando puede ser:

# test -e $HOME/.configuracion

para facilitar la notación dentro del comando if se hace un enlace simbólico2.14a un comando llamado [. Parece extraño llamar a un comando con un corchete abierto pero veamos un ejemplo:

if test -e $HOME/.configuracion

Puede traducirse a:

if [ -e $HOME/.configuracion ]

donde el ] (corchete cerrado) final no tiene importancia y la programación queda menos engorrosa.

Podríamos utilizar lo aprendido para crear un script que ``Si el usuario no posee el archivo  /HOME/.configuracion con la configuracion por defecto'' en unas pocas líneas:

if [ -e $HOME/.configuracion ]
then
  crear-configuracion >> $HOME/.configuracion
fi

El comando test permite la composición de condiciones con AND y OR lógicos con los modificadores -a y -o respectivamente y el modificador NOT con !. Se podría agregar a la linea del if anterior la condición ``y además no posee el archivo SinConfiguracion'' de la siguiente forma

if [ -e $HOME/.configuracion -a ! -e SinConfiguracion]

Ejemplos mucho más interesantes de analizar se pueden encontrar en el directorio /etc/rc.d/init.d2.15.


next up previous contents
Next: El comando while Up: Programación en shell Previous: Códigos de salida   Índice General
Proyecto Cursos - LuCAS - http://lucas.hispalinux.es/htmls/cursos.html