Programación Bash
El autor del contenido que voy a postear ahora es Ariel de eslinux.com, es un tema bastante util en bash y lo saco del su manual de bash que escribio en el 2004, como añadido a la guia bash..
– Evaluación de cadenas de
caracteres.
-z CADENA
verdadero si la longitud de la cadena es cero (nula).
-n CADENA
verdadero si la longitud de la cadena es distinta de cero (no nula).
CADENA1 = CADENA2
verdadero si las cadenas son iguales.
CADENA1 != CADENA2
verdadero si las cadenas son distintas.
CADENA
verdadero si la cadena es no nula.
Ejemplos:
$ STR=\»abcd\»
$ test \»$STR\» = abcd
$ echo $?
0
$ test \»$STR\» != abcd
$ echo $?
1
$ test -z \»\»
$ echo $?
0
$ test -n \»\»
$ echo $?
1
$ test \»\»
$ echo $?
1
Veamos un ejemplo que aclara algunos errores comunes.
$STR = \»abcd \»
$ test $STR = \»abcd \»
$ echo $?
1
$ test \»$STR\» = \»abcd \»
$ echo $?
0
Vemos que STR es \»abcd \», (con un
espacio al final), en el primer test lo comparamos con \»abcd \»
(también con un espacio al final) y debería dar verdadero
pero dio falso, ¿ a que se debe ?
Esto se produce porque el interprete primero realiza la sustitución
del valor de la variable STR y luego remueve el espacio que tiene al final
STR, porque supone que están demás, ósea que el comando
test ejecutado queda así : test \»abcd\» = \»abcd \»
y efectivamente es falso.
Para que esto no suceda, en el segundo test la variable STR
aparece entre comillas (\»$STR\»), de esta manera el interprete
no le quita el espacio final y test recibe el parámetro correctamente
dando la comparación verdadera, esta es la forma correcta de hacerlo.
– Evaluación de números enteros.
Suponemos que INT1 e INT2 contienen caracteres
que representan números enteros.
INT1 -eq INT2
verdadero si INT1 es igual a INT2
INT1 -gt INT2
verdadero si INT1 es mayor que INT2 (greater than)
INT1 -lt INT2
verdadero si INT1 es menor que INT2 (less than).
INT1 -ge INT2
verdadero si INT1 es mayor o igual que INT2 (greater than or equal).
INT1 -le INT2
verdadero si INT1 es menor o igual que INT2 (less than or equal).
$ num1=0222
$ test \»$num1\» -eq 222
$ echo $?
0
$ test \»$num1\» -gt 222
$ echo $?
1
– Evaluación de archivos.
Veamos los mas importantes:
Suponemos que FILE contiene el path y nombre de un archivo.
-b FILE
Verdadero si el archivo existe y es un dispositivo de bloques.
-c FILE
Verdadero si el archivo existe y es un dispositivo de caracteres.
-d FILE
Verdadero si el archivo existe y es un directorio.
-e FILE
Verdadero si el archivo existe.
-f FILE
Verdadero si el archivo existe y es un archivo ordinario
-r FILE
Verdadero si el archivo existe y tenemos permiso de lectura.
-w FILE
Verdadero si el archivo existe y tenemos permiso de escritura.
-x FILE
Verdadero si el archivo existe y tenemos permiso de ejecución.
Nos vemos espero les sirva la info. Meritos para el autor.