08 - Estructuras repetitivas
Índice
1. Mientras
2. Hasta
3. Para
3.1. Contadores
3.2. Primer caso
3.3. Segundo caso
3.4. Tercer caso
4. Select
5. Ejemplos
1. Mientras
Se utiliza en el caso de que el contenido suceda al menos una vez.
while condicion
do
orden 1
...
orden n
done2. Hasta
Se utiliza en el caso de que no tiene por que suceder el contenido de la estructura.
until condicion
do
orden 1
...
orden n
done3. Para
Se utiliza cuando sabemos cuantas veces sucederá la repetición.
3.1. Contadores
Los contadores se utilizan para contar cada vuelta de la iteración. Las cuentas pueden ser progresivas (0, 1,..., n-1, n) o regresivas (n, n-1,..., 1, 0).
Para incrementar o decrementar su valor nos serviremos de la doble suma/resta o también del comando seq:
cont++
ó
cont--
ó
seq valorInicial incremento valorFinalLos contadores pueden tener valor numérico o alfabético, en cada caso se explica cual.
En el caso de seq el incremento no tiene que ser necesariamente unitario.
3.2. Primer caso
for ((cont=0;cont<n;i++))
do
orden 1
...
orden n
doneó
for cont in `seq valorInicial incremento valorFinal`
do
orden 1
...
orden n
doneEn el doble paréntesis hay que:
- iniciar el contador (cont=0);
- exponer la condición hasta la que se realizará la iteración (n>cont ó ...);
- incrementar/decrementar el contador (i++ ó seq ...)
Nótese que la orden seq no nesecita doble paréntesis pero sí acentos graves.
3.3. Segundo caso
En este caso el número de veces que se repite la iteración es la cantidad de elementos de la enumeración que hay a la derecha del in, además el contador va cogiendo el valor de cada elemento correspondiente en la enumeración en cada una de las iteraciones.
No es necesario iniciar el contador.
for cont in enumeracion
do
orden 1
...
orden n
done3.4. Tercer caso
En este caso la enumeración es la salida de un comando que debe encerrarse entre acentos graves.
for cont in `comando`
do
orden 1
...
orden n
done4. Select
Con esta iteración creamos un menú. En este caso en la enumeración introducimos los elementos del menú y la instrucción select crea un menú donde escogeremos la opción que nos interese. La opción escogida se almacena en la variable de select (el elemento, no el número de opción).
Este es un bucle infinito del que sólo se puede salir utilizando el comando de escape break.
select var in a b c d e salir
do
orden 1
...
orden n
done5. Ejemplos
#!/bin/bash
sal=n
while [ $sal = n ]
do
echo "¿Quieres salir del bucle? (no: n; sí: cualquier otra cosa)"
read sal
done
exit 0 #!/bin/bash
sal=n
until [ $sal = s ]
do
echo "¿Quieres salir del bucle? (sí: s; no: cualquier otra cosa)"
read sal
done
exit 0 #!bin/bash
for cont in `seq 0 2 20`
do
echo $cont
done
exit 0 #!/bin/bash
for cont in a e i o u
do
echo Archivos que empiezan por la letra $cont en tu carpeta personal:
echo
ls ~/$cont*
echo
done
exit 0 #!/bin/bash
num=0
for cont in `ls`
do
echo fichero $num: $cont
let num=num+1
done
exit 0 #!/bin/bash
select var in a b c d e salir
do
echo "Has escogido $var"
if test $var = salir
then
break
fi
done
exit 0