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.