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