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

1if CONDICION; then
2   bloque de comandos
3fi
1if CONDICION; then
2    bloque de comandos b1
3else
4    bloque de comandos b2
5fi

Ejercicios

1#!/bin/bash
2 
3# Programa que reciba un parámetro y diga de que tipo es
4 
5if  test -e $1; then
6        echo "Has metido una fichero";
7else
8        echo "No es una fichero";
9fi
10 
11if test -d $1; then
12        echo "Has metido un directorio";
13else
14        echo "No es un directorio"
15fi
16 
17if test -n $1; then
18        echo "El parametro existe";
19else
20        echo "El parametro no  existe";
21fi
1#!/bin/bash
2 
3# Programa que pida una ruta de un fichero para borrarlo y que pida confirmación
4 
5echo ¿Esta seguro que quiere borrar el fichero?;
6read res;
7if test $res = "si"; then
8        if test -f $1; then
9                echo $(rm -r $1);
10                echo "Fichero $1 borrado";
11        else
12                echo $1 "NO es un fichero";
13        fi
14else
15        echo "El archivo no a sido borrado";
16fi
1#! /bin/bash
2 
3# Ejercicio 3: Dado el numero indicar si es o no divisible entre 101. Si no se mete un número
4# debe mostrar como usar el programa
5 
6read n1;
7if test -n "$n1"; then
8        if test $(($n1%101)) -eq 0; then
9        echo divisible;
10        else
11        echo no divisible;
12        fi
13else
14        echo Introduce un numero;
15fi

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