| Programación en shell: Administración de linux: Una guía básica | ||
|---|---|---|
| Anterior | Programas de shell | Siguiente |
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.