Google
Web dns.bdat.net
next up previous contents
Next: Estructura de control Up: Programas de shell Previous: Lectura desde la entrada   Índice General

Evaluación de expresiones: test

La orden test evalúa una expresión para obtener una condición lógica que posteriormente se utilizará para determinar el flujo de ejecución del programa de shell con las sentencias correspondientes. La sintaxis de la instrucción es:

test expr

Para construir la expresión disponemos una serie de facilidades proporcionadas por la shell. Estas expresiones evalúan una determinada condición y devuelven una condición que puede ser verdadera o falsa. El valor de la condición actualiza la variable $? con los valores cero o uno para los resultados verdadero o falso.

Pasamos a describir a continuación estas condiciones, y tenemos que tener en cuenta que es importante respetar todos los espacios que aquí aparecen.

-f fichero existe el fichero y es un fichero regular

-r fichero existe el fichero y es de lectura

-w fichero existe el fichero y es de escritura

-x fichero existe el fichero y es ejecutable

-h fichero existe el fichero y es un enlace simbólico.

-d fichero existe el fichero y es un directorio

-p fichero existe el fichero y es una tubería con nombre

-c fichero existe el fichero y es un dispositivo de carácter

-b fichero existe el fichero y es un dispositivo de bloques

-u fichero existe el fichero y está puesto el bit SUID

-g fichero existe el fichero y está puesto el bit SGID

-s fichero existe el fichero y su longitud es mayor que O

-z s1 la longitud de la cadena s1 es cero

-n s1 la longitud de la cadena s1 es distinta de cero

s1=s2 la cadena s1 y la s2 son iguales

s1!=s2 la cadena s1 y la s2 son distintas

n1 -eq n2 los enteros n1 y n2 son iguales.

n1 -ne n2 los enteros n1 y n2 no son iguales.

n1 -gt n2 n1 es estrictamente mayor que n2.

n1 -ge n2 n1 es mayor o igual que n2.

nl -lt n2 n1 es menor estricto que n2.

nl -le n2 n1 es menor o igual que n2.

Estas expresiones las podemos combinar con:

! operador unario de negación

-a operador AND binario

-o operador OR binario

Ejemplos:

$ test -f /etc/profile
$ echo $?
$ test -f /etc/profile -a -w /etc/profile
$ echo $?
$ test 0 -lt 0 -o -n "No nula''
$ echo $?

La orden test se puede sustituir por unos corchetes abiertos y cerrados. Es necesario dejar espacios antes y después de los corchetes; este suele ser unos de los errores más frecuentes.


next up previous contents
Next: Estructura de control Up: Programas de shell Previous: Lectura desde la entrada   Índice General
Pedro Pablo 2001-12-14