07 - Estructuras alternativas

Índice

1. if then
2. if then ... else
3. if then ... elif ... else
4. case
5. Ejemplos


1. if then

if condicion
then
  orden 1
  ...
  orden n
fi

Tan sencillo como que si la condición es cierta se ejecutan los comandos encerrados en la estructura.

2. if then ... else

if condicion
then
  orden 1
  ...
  orden n
else
  orden 1
  ...
  orden n
fi

En el caso de que la condición sea cierta sólo se ejecutará las condiciones encerradas entre el primer then y el else, en caso de que la condición sea falsa sólo se ejecutarán los comandos comprendidos entre el else y el fin de la estructura.

3. if then ... elif ... else

if condicion
then
  orden 1
  ...
  orden n
elif condicion
then
  orden 1
  ...
  orden n
else
  orden 1
  ...
  orden n
fi

En el caso de que no se cumpla la primera condición se comprobará la siguiente, en el caso de que tampoco se cumpla se ejecutarán las sentencias del else. En caso de que se cumpla cualquiera de las condiciones sólo se ejecutarán las sentencias que corresponden a la primera condición y ya no se comprobarán más. Se pueden introducir tantos conjuntos elif como uno desee.

4. case

case variable in
caso1)
  orden 1
  ...
  orden n;;
caso2|caso3)
  orden 1
  ...
  orden n;;
casoN)
  orden 1
  ...
  orden n;;
*)
  orden 1
  ...
  orden n;;
esac

Esta estructura trabaja con una variable y no con una condición true/false como las anteriores.
En cada caso hay que sustituir el "casoN" por el valor de la variable. Para realizar la misma acción para varios casos sólo hay que separarlos con la barra vertical (vg: caso2|caso3) ).
El asterisco corresponde a la opción "default", es decir, en el supuesto de que no coincida ninguno de los valores anteriores sucederá este caso, si se omite se saldrá del case sin ejecutar ninguna de las opciones.

5. Ejemplos

#!/bin/bash
echo Introduce un número menor que 10
read num
if test $num -lt 10
then
echo Has introducido el número $num
fi
exit 0

#!/bin/bash
echo Introduce un número menor que 10
read num
if test $num -lt 10
then
echo Has introducido el número $num
else
echo El número $num no es menor que 10
fi
exit 0

#!/bin/bash
echo Introduce un número menor que 10
read num
if test $num -lt 10
then
echo Has introducido el número $num
elif test $num -eq 10
then
echo El número introducido es un 10!
else
echo El número $num no es menor que 10
fi
exit 0

#!/bin/bash
echo Escoge un número entre 1 o 2
read num
case $num in
1)
echo Has introducido un 1;;
2)
echo Has introducido un 2;;
*)
echo El numero debe ser 1 o 2;;
esac
exit 0