Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: leogtz en 30 Octubre 2010, 07:42 am



Título: Bucles tipo C/C++ en Bash
Publicado por: leogtz en 30 Octubre 2010, 07:42 am
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:


Código
  1. for((i = 0; i < 10; i++))
  2. do
  3. echo -e "Contador : ${i}";
  4. done
  5.  


Código
  1. #!/bin/bash
  2. for((i = 0; i < 10; ))
  3. do
  4. echo -e "Contador : ${i}";
  5. ((i++));
  6. done
  7.  

WHILE:

Código
  1. #!/bin/bash
  2. ((i = 0));
  3. while((i <= 10))
  4. do
  5. echo -e "${i}";
  6. ((i++));
  7. done
  8.  


Código
  1. #!/bin/bash
  2. ((i = 0));
  3. while((i++ <= 10))
  4. do
  5. echo -e "${i}";
  6. done
  7.  


Título: Re: Bucles tipo C/C++ en Bash
Publicado por: Afsoon en 30 Octubre 2010, 17:19 pm
Pero si en While lo que intentas es declarar la variable "i" no seria mas comodo

Código
  1. i= 0
  2.  

en vez de hacer

Código
  1. ((i = 0));
  2.  

para mi me parece mas "limpio"


Título: Re: Bucles tipo C/C++ en Bash
Publicado por: leogtz en 30 Octubre 2010, 21:09 pm
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:

Código:
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é.


Título: Re: Bucles tipo C/C++ en Bash
Publicado por: Afsoon en 31 Octubre 2010, 18:58 pm
Vale si tienes razon pero normalmente no me sale eso


Título: Re: Bucles tipo C/C++ en Bash
Publicado por: leogtz en 31 Octubre 2010, 19:03 pm
¿Qué shell estás usando?


Título: Re: Bucles tipo C/C++ en Bash
Publicado por: JuszR en 3 Noviembre 2010, 09:18 am
Yo si solo quiero una secuencia prefiero el otro (un poco más claro):
Código
  1. for i in 1..10
  2. do
  3.    echo -n "$i "
  4. done
  5.  


Título: Re: Bucles tipo C/C++ en Bash
Publicado por: leogtz en 4 Noviembre 2010, 01:44 am
Supongo que querías decir:

Código
  1. #!/bin/bash
  2. for i in $(seq 1 1 10)
  3. do
  4. echo -e "$i ";
  5. done
  6.  

Código
  1. #!/bin/bash
  2. for i in `echo {1..10}`
  3. do
  4. echo -e "$i";
  5. done
  6.