Estructuras de control

IF

if
then (también if ... ; then)
else
fi

ELIF

if
then
elif
else
fi
if [ $timeofday = "yes" ] no es correcto porque si, por ejemplo tuviéramos que asignar un valor a timeofday leyendo de teclado con read y sólo pulsáramos enter obtendríamos un error

[: =: unary operator expected
porque en realidad estaría leyendo

if [ = "yes" ]
así que siempre

if [ "$timeofday" = "yes" ]
con lo que leerá

if [ "" = "yes" ] que es una cadena vacía válida para la comprobación.
Para eliminar la nueva línea

echo -e no lo aceptan todos los sistemas
echo -n válido para bash
printf es la opción portable

FOR

for variable in valores
do
comandos
done

WHILE

while condición do
comandos
done

UNTIL

until condición do
comandos
done

CASE

case variable in
patrón ) comandos;;
patrón2 ) comandos;;
patrón3 ) comandos;;
patrón4 ) comandos;;
...
esac
Se ponen dos punto y coma al final porque los patrones pueden constar de varias sentencias.

Siempre se ejecuta el primer patrón que corresponda aunque también lo haga uno posterior.

case "$timeofday" in
Y | y | Yes | yes | YES )
echo "Has contestado afirmativamente"
;;
[Nn]*) echo "Has dicho que no" #(las comillas no funcinan entre paréntesis).
;;
esac

LISTAS

LISTAS AND

if [ -f file1 ] && echo "Hola" && [ -f file2 ] && echo " ¿qué tal?
then
echo "La lista es verdadera"
else
echo "La lista es falsa"
fi
es falsa cuando no se cumpla una condición y ya no comprueba más.

LISTAS OR

condición1 || condición2 || condición3 || ...
Es verdadera en cuanto se cumpla una condición y ya no comprueba más.

BLOQUES DE SENTENCIAS

Si se desea utilizar más de una sentencia en un miembro de una lista AND u OR se deben incluir entre corchetes.

No hay comentarios:

Publicar un comentario