Linux/Unix Shell Scripting - Ayuda!! Bucles WHILE anidados

 
Vista:
sin imagen de perfil

Ayuda!! Bucles WHILE anidados

Publicado por elias (2 intervenciones) el 04/02/2018 21:58:09
Hola a todos!!
Necesito por favor si alguien me puede ayudar con el siguiente problema:
He estado tratando de hacer bucles while anidados pero sin el resultado que quiero, el bucle externo solo se ejecuta 1 vez por lo que no se estan haciendo las vueltas necesarias . Dejo las imagenes para que alguien me pueda ayudar!!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/bash
echo " Experimentos a calcular: $1"
echo " Pasos de predicción: $2"
 
c=$1
i=$2
 
j=0
k=1
 
while [ $j -le $c ]; do
             while [ $k -le $i ]
             do
                echo "Vuelta" $j $k
                let k=$(( $k + 1 ))
             done
        let j=$(( $j + 1))
done

Resultado:


1
2
3
4
5
Experimentos a calcular: 2
 Pasos de predicción: 3
Vuelta 0 1
Vuelta 0 2
Vuelta 0 3
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de abzerox
Val: 101
Oro
Ha mantenido su posición en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

Ayuda!! Bucles WHILE anidados

Publicado por abzerox (27 intervenciones) el 04/02/2018 23:36:52
Hola elias, el problema es que la variable k en su primera ejecución alcanza su máximo valor por lo que no cumplira la condición del while, por ende debes reinciarla a su valor inicial así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash
 
echo " Experimentos a calcular: $1"
echo " Pasos de predicción: $2"
 
c=$1
i=$2
j=0
k=1
 
while [ $j -le $c ]; do
    while [ $k -le $i ]
    do
        echo "Vuelta" $j $k
        let k=$(( $k + 1 ))
    done
    let j=$(( $j + 1))
    k=1
done
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

Ayuda!! Bucles WHILE anidados

Publicado por elias (2 intervenciones) el 05/02/2018 00:14:37
Gracias por la pronta respuesta!! Funciono, lo que pasa es que estoy oxidado hace un tiempo no programo y no lo vi jajaj .
Saludos, buena semana!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar