miércoles, 7 de noviembre de 2012

5.5 El comando test

El comando condicional incorporado al shell test se utiliza a menudo para probar una o más condiciones que siguen al comando if.



El comando test evalúa una expresión, y si el resultado es verdadero, devuelve un estado de salida de cero. De otro modo el resultado es falso, y devuelve un estado de salida que no es cero.


La expresión compara normalmente dos números o dos cadenas para comprobar si los valores son idénticos. La expresión se utiliza también para probar el estado de un archivo.

Formato del Comando:

if test expresión o if [expresión]

then


ejecutar comando(s)

fi

En el ejemplo que figura a continuación, test evalúa la variable $answer para determinar si el usuario respondió "y" (de "yes" - sí) a la pregunta ("Clear the screen before listing files?" - "¿Despejar la pantalla antes de mostrar el listado de archivos?"). De ser verdadera, se despeja la pantalla y se muestra el contenido del directorio actual. De ser falsa, se muestra el contenido del directorio actual pero no se despeja antes la pantalla.

#!/bin/ksh

echo "Clear the screen before listing files?"


echo " enter y for Yes or n for No:\c"


read answer


if test "$answer" = y


then


       clear;ls


else

       ls


fi


El comando test se utiliza tan a menudo en los scripts de shell que los corchetes ([ ]) pueden utilizarse como alternativa a tipear "test". Por ejemplo, la línea "if test "$answer" = y" de más arriba también podría escribirse así: "if [ $answer = y ].


Nota: el signo != (no igual) puede utilizarse para probar si una cadena no es igual a otra.

Operadores del Comando Test

Casi todos los scripts de shell avanzados funcionan con archivos. El comando testpermite a los operadores probar el tipo de archivo, los permisos del archivo y si un archivo contiene o no determinados datos. La figura presenta una lista de los operadores de archivos utilizados más comúnmente con test.



El signo ! (bang) denega una prueba, de modo que [ ! -w archivo] denega [ -w archivo]. Por ejemplo, el siguiente script de shell filetest.sh acepta un nombre de archivo como argumento y luego lleva a cabo una cierta cantidad de pruebas para determinar los permisos de los archivos.

$ cat filetest.sh

#!/bin/ksh

if [ ! -f $1 ] #test: if the first file specified doesn't exists then echo message

then


     echo "Sorry, file does not exist"

elif [ ! -r $1 ] #test: if the first file specified doesn't have read perms then echo message

then

     echo "File is not readable"

elif [ ! -w $1 ]

then


     echo "File is not writeable"

else


     echo "File is both readable and writeable"

fi

No hay comentarios.:

Publicar un comentario