Condicionales en Shell Script

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

if CONDICION; then
   bloque de comandos
fi
if CONDICION; then
    bloque de comandos b1
else
    bloque de comandos b2
fi

Ejercicios

#!/bin/bash

# Programa que reciba un parámetro y diga de que tipo es

if  test -e $1; then
        echo "Has metido una fichero";
else
        echo "No es una fichero";
fi

if test -d $1; then
        echo "Has metido un directorio";
else
        echo "No es un directorio"
fi

if test -n $1; then
        echo "El parametro existe";
else
        echo "El parametro no  existe";
fi
#!/bin/bash

# Programa que pida una ruta de un fichero para borrarlo y que pida confirmación

echo ¿Esta seguro que quiere borrar el fichero?;
read res;
if test $res = "si"; then
        if test -f $1; then
                echo $(rm -r $1);
                echo "Fichero $1 borrado";
        else
                echo $1 "NO es un fichero";
        fi
else
        echo "El archivo no a sido borrado";
fi

#! /bin/bash

# Ejercicio 3: Dado el numero indicar si es o no divisible entre 101. Si no se mete un número
# debe mostrar como usar el programa

read n1;
if test -n "$n1"; then
        if test $(($n1%101)) -eq 0; then
        echo divisible;
        else
        echo no divisible;
        fi
else
        echo Introduce un numero;
fi

Con esto ya debemos saber utilizar las condiciones en Shell Script 🙂

Víctor Robles WEB

Autor: Victor

Desarrollador web - Formador online - Blogger

Compartir este post