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ón

Se 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.