Hola, hace rato que quería escribir esto.
Yo honestamente prefiero los ciclos tipo C que los que brinda la shell, así que relato un poco como utilizarse, varía un poco, pero practicamente es la misma.
FOR:
for((i = 0; i < 10; i++))
do
echo -e "Contador : ${i}";
done
#!/bin/bash
for((i = 0; i < 10; ))
do
echo -e "Contador : ${i}";
((i++));
done
WHILE:
#!/bin/bash
((i = 0));
while((i <= 10))
do
echo -e "${i}";
((i++));
done
#!/bin/bash
((i = 0));
while((i++ <= 10))
do
echo -e "${i}";
done
Pero si en While lo que intentas es declarar la variable "i" no seria mas comodo
i= 0
en vez de hacer
((i = 0));
para mi me parece mas "limpio"
Lo de la iniciaciòn es lo de menos, eso no lo querìa resaltar, lo que querìa resaltar es la similitud entre los ciclos. Lo demàs es irrelevante.
Además de que lanzaría un error declarando la variable como tu dices:
leo@leo-desktop:~/Escritorio$ cat shell.sh
#!/bin/bash
i= 3
echo -e "Valor : ${i}";
leo@leo-desktop:~/Escritorio$ bash shell.sh
shell.sh: line 2: 3: orden no encontrada
Valor :
leo@leo-desktop:~/Escritorio$
La correcta declaración con espacios es como ya lo indiqué.
Vale si tienes razon pero normalmente no me sale eso
¿Qué shell estás usando?
Yo si solo quiero una secuencia prefiero el otro (un poco más claro):
for i in 1..10
do
echo -n "$i "
done
Supongo que querías decir:
#!/bin/bash
for i in $(seq 1 1 10)
do
echo -e "$i ";
done
#!/bin/bash
for i in `echo {1..10}`
do
echo -e "$i";
done