Lógica en bash
La lógica en bash es un álgebra de boole, al contrario que C bash utiliza el 0 para el valor verdadero o true y el 1,2... 225 para falso, ya que utiliza un char para trabajar con esto(C también) (bash maneja caracteres y cadenas de caracteres).
- && and , y
- || or , o
- ! negación (si es cualquier número diferente de 0 lo convierte en 0 y si es 0 supongo que lo convertirá en 1)
hay un comando test que sirve para resolver comparaciones
test cad1 = cad2
devuelve verdadero si son iguales y falso.
Es tan común esta sentencia que se puede escribir también [ cad1 = cad2 ]
Comparación numérica
- -gt great than
- -lt less than
- -ge great than or equal
- -le less than or equal
- -eq equal
- -ne not equal
Comparación de cadenas
- = devuelve verdadero si las 2 cadenas son iguales
- != devuelve verdadero si las 2 cadenas son diferentes
- -n verdadero si la cadena no es nula
- -z verdadero si la cadena es nula
Cuestiones sobre ficheros
- -a fic si existe devuelve true
- -b fic si es un dispositivo de bloque devuelve true
- -c fic si es un dispositivo de caracter devuelve true
- -e fic igual que a
- -f fic si es un fichero regular devuelve true
- -g fic si tiene activo setdig devuelve true
- -G fic si pertenece al grupo devuelve true
- -h fic si es un enlace simbólico devuelve true
- -k fic si tiene activo sticky devuelve true
- -L fic = -h fic
- -N fic si se modificó en la ultima lectura devuelve true
- -o fic = -G fic
- -p fic si es una pipe devuelve true
- -r fic si se puede leer devuelve true
- -s fic si no está vacío devuelve true
- -u fic si tiene activado setuid devuelve true
- -w fic si tiene permiso de escritura devuelve true
- -x fic si permiso de ejecución devuelve true
- fic1 -nt fic2 compara por fecha de mod now than
- fic1 -ot fic2 compara por fecha de mod old than
- fic1 -ef fic2 comprueba si son el mismo fichero equal than