martes, 30 de octubre de 2012

5.4 Comando if

Para ser de utilidad, un programa debe poder probar condiciones y tomar decisiones. El programa debe poder examinar el resultado de un comando y elegir entre dos o más cursos de acción. La prueba más simple es determinar si una condición es verdadera o falsa. Si la condición es verdadera, se ejecuta cualquier cantidad de comandos subsecuentes, de no ser así, se continúa con el script.


Los comandos que llevan a cabo ciertas tareas basadas en si una condición tiene éxito o falla se denominan comandos condicionales. Los tres comandos condicionales utilizados más frecuentemente son if, test, y case.

El condicional if


La forma más simple de un comando condicional es el comando if.



El comando if es un comando de shell incorporado que le permite al alumno probar una condición y luego cambiar el flujo de la ejecución de un script de shell basándose en el resultado de la prueba.

Existen tres formatos del comando if. El comando fi (if invertido) se coloca siempre al final de un condicional if.

El Formato del Comando if-then (si-entonces):

if
el comando tiene éxito

then


ejecutar el/los comando(s)

fi


La Figura 1  muestra un ejemplo de un script de shell que utiliza el formato del comando if-then


FIGURA 1


El Formato del Comando if-then-else (si-entonces-de lo contrario):


if el comando tiene éxito

then



ejecutar el/los comando(s)

else


ejecutar el/los comando(s)

fi

El Formato del Comando if-then-elif (else if)(si-entonces-de lo contrario si):


if el comando tiene éxito

then



ejecutar el/los comando(s)

elif el comando tiene éxito

then


ejecutar el/los comando(s)

else


ejecutar el/los comando(s)

fi

La Figura 2 muestra un ejemplo de un script de shell que utiliza el formato de comando if-then-elif.


FIGURA 2
Estado de Salida
Cada vez que se completa la ejecución de un comando, dentro de un script o en la línea de comandos, éste devuelve un "estado de salida" al shell. El estado de salida es un valor numérico que indica si el comando se ejecutó con éxito.

Cada comando que se ejecuta tiene un estado de salida configurado por la persona que escribió el comando. Por lo general un estado de cero (0) significa que el comando se ejecutó exitosamente y cualquier valor que no sea cero significa que el comando falló. Los fallos pueden ser ocasionados por argumentos inválidos pasados al comando o por una condición de error que se ha detectado. El alumno deberá verificar las páginas man de un comando dado para determinar su estado de salida.

Al revisar el formato if-then que figura más arriba, el comando que sigue al enunciado if se ejecuta y se devuelve su estado de salida.

Si el estado de salida es 0 (cero), el comando tuvo éxito, y el comando o los comandos que siguen entre los enunciados then y fi se ejecutan. El fi termina el bloque if.

Si, no obstante, el primer comando se ejecuta y el estado de salida no es cero, esto significa que el comando falló. Cualquier cosa después del enunciado then se ignora y el control pasa directamente a la línea después del enunciado fi. Los fallos pueden ser ocasionados por argumentos inválidos que pasaron al programa por una condición de error que haya sido detectada.

La variable del shell $? es configurada automáticamente por el shell al estado de salida del último comando ejecutado. Se utiliza el comando echo para mostrar su valor.

La Figura 3 muestra cómo visualizar el estado de salida de una ejecución exitosa (estado de salida 0) y sin éxito (estado de salida 2) del comando mkdir.

Al escribir scripts de shell el alumno puede agregar exit 0 ("salida 0") al final del script de shell para indicar que se completó exitosamente. El salir con cualquier otro valor indicaría que tuvo lugar un error en el script.


No hay comentarios.:

Publicar un comentario