04 - Expresiones lógicas
Índice
1. Operadores lógicos
2. Comparando expresiones numéricas
3. Comparando expresiones alfanuméricas
4. Expresiones con ficheros
5. Comprobando expresiones
6. Los comando true y false
Introducción
Son expresiones que dan como resultado un valor del tipo booleano (true o false)
exresión <op> expresiónSe puede repetir tantas veces como sea necesario en las operaciones.
1. Operadores lógicos
- and : -a
- or : -o
- not : !
No creo que sea necesario explicar que es cada cosa
2. Comparando expresiones numéricas
- = : -eq
- ≠ : -ne
- > : -gt
- >= : -ge
- < : -lt
- <= : -le
Es bastante lógico (valga la redundancia) sobre todo si se sabe inglés. Tampoco creo que sea necesario ninguna explicación
3. Comparando expresiones alfanuméricas
- = : =
- != : ≠
- -n $1 : Cadena de longitud no nula
- -z $1 : Cadena vacia
La longitud nula sera cuando la variable no contenga nada.
La cadena vacía será cuando la variable no contenga nada pero tenga algo, vg: un espacio.
Si no se ve la diferencia no vale la pena calentarse la cabeza, con saber que eso está ahí, por ahora, es suficiente, más adelante veremos ejemplos prácticos que lo aclararán.
4. Expresiones con ficheros
- -e : el fichero existe
- -s : el fichero existe y no está vacío
- -f : el fichero existe y es regular
- -d : el fichero existe y es un directorio
- -h : el fichero existe y es un enlace
- -r : el fichero existe y tiene permiso para leer
- -w : el fichero existe y tiene permiso para escribir
- -x : el fichero existe y tiene permiso para ejecutar
5. Comprobando las expresiones
Los desarrolladores de linux han pensado en todo:
$ test expresión
ó
$ [ expresión ]En el caso de los corchetes los espacios entre la expresión y los corchetes son obligatorios.
Para ver la salida:
$ echo $?Nos devolverá uno de estos dos valores:
- 0 : correcto
- 1 : incorrecto
6. Los comandos true y false
En ocasiones no necesitamos saber el resultado de una expresión lógica si no el valor "verdadero" o "falso" para poder asignarlo a una variable, salir de un bucle, ... para ello tenemos los comandos true y false.