Publicado en Sep 3, 2016
Las expresiones condicionales en Shell Script son algo muy especifico en este lenguaje, podemos usar el comando test para ello:
test expresion [ expresion ]
Este comando evalúa expresión, y si evalúa a cierto, devuelve cero (true), o en otro caso 1 (false). Si no hay expresión, test siempre devuelve falso. Este comportamiento puede ser algo confuso, ya en lógica los valores cierto y falso suelen ser al contrario.
test soporta gran cantidad de operadores, algunos son:
-d fichero => cierto si fichero existe y es un directorio
-e fichero => cierto si fichero existe, independientemente del tipo que sea
-f fichero => cierto si fichero existe y es un fichero normal
-r fichero => cierto si fichero existe y se puede leer
-s fichero => cierto si fichero existe y tiene tamaño mayor que cero
-w fichero => cierto si fichero existe y es se puede escribir sobre él
-x fichero => cierto si fichero existe y es ejecutable
n1 -eq n2 => cierto si los enteros n1 y n2 son iguales
n1 -ne n2 => cierto si los enteros n1 y n2 no son iguales
n1 -gt n2 => cierto si el enteros n1 es mayor que n2
n1 -ge n2 => cierto si los enteros n1 y n2 son iguales o n1 es mayor que n2
n1 -lt n2 => cierto si el enteros n1 es menor que n2
n1 -le n2 => cierto si los enteros n1 y n2 son iguales o n1 es menor que n2
s1 = s2 => cierto si las cadenas de texto s1 y s2 son idénticas
s1 != s2 => cierto si las cadenas de texto s1 y s2 no son idénticas
s1 < s2 => cierto si la cadena de texto s1 es menor que s2
s1 > s2 => cierto si la cadena de texto s1 es mayor que s2
-n cadena => cierto si la longitud de la cadena de texto es distinta de cero
! expresion => cierto si expresion es falsa (negación)
expresion1 -a expresion2 => cierto si expresion1 y expresion2 son ciertas
expresion1 -o expresion2 => cierto si expresion1 o expresion2 son ciertas
IF
Ejercicios
6 | echo "Has metido una fichero" ; |
8 | echo "No es una fichero" ; |
12 | echo "Has metido un directorio" ; |
14 | echo "No es un directorio" |
18 | echo "El parametro existe" ; |
20 | echo "El parametro no existe" ; |
5 | echo ¿Esta seguro que quiere borrar el fichero?; |
7 | if test $res = "si" ; then |
10 | echo "Fichero $1 borrado" ; |
12 | echo $1 "NO es un fichero" ; |
15 | echo "El archivo no a sido borrado" ; |
8 | if test $(($n1%101)) - eq 0; then |
14 | echo Introduce un numero; |
Con esto ya debemos saber utilizar las condiciones en Shell Script 🙂