No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Curso de Programaci贸n en Bash Shell

Curso de Programaci贸n en Bash Shell

Marco Antonio Toscano Freire

Marco Antonio Toscano Freire

Break y continue

27/43
Recursos
  • Break se utiliza para salir de la ejecuci贸n de los ciclos for y while.
  • Continue se utiliza para continuar con la siguiente ejecuci贸n.

Aportes 33

Preguntas 4

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

El tema es que el tema del tema de todo este tema es todo un tema.

Tal vez, no es muy claro cuando el profe habla sobre el condicional relacionado al continue:

        elif [[ $fil == 4* ]]; then
            continue;

Se utilizan los corchetes dobles [[, porque la comparacion se realizar谩 con ==, tambien el utilizar 4* indica que la comparacion verificara cualquier archivo que su nombre comience con el numero 4.

En este link pueden encontrar mas informaci贸n: https://linuxize.com/post/how-to-compare-strings-in-bash/

Es que de verdad no tiene sentido el uso de la palabra 鈥渢ema鈥, c贸mo que 鈥渆l tema del 4, el tema del 5鈥?? Por favor, trabaje ese tipo de cosas al dar un curso, distorsiona mucho el mensaje que quiere dar y cansa

tema...tema...tema....tema...tema

La explicaci贸n es

  • Que en el int茅rprete de comandos lee todo el if por que esta dentro de un bucle for y el break de este 鈥榠f鈥 termina el bucle.

  • Pero hay un elsif que est谩 anidado y su condici贸n es que, si detecta alg煤n $file que empiece con 4 entonces continue pero esta funci贸n pasa por alto dicho archivo ocult谩ndolo, por lo tanto el bucle termina cuando llega al 10_download.sh

  • En resumidas cuentas la orden del break significa cuando finaliza y el continue lo oculta iterando hasta su condici贸n principal y como estas condiciones est谩n dentro del bucle for

Bingo

Este curso lo deber铆an renovar

Aplicando lo aprendido 馃ぃ馃ぃ馃ぃ

infinito_tema=1
while [ infinito_tema = infinito_tema ]; do
 echo "EL TEMA $infinito_tema!"
 infinito_tema=$(( infinito_tema + 1 ))
done

Ya enserio, puede trabajar en mejorar eso, ense帽a super bien pero la muletilla se vuelve cansona

Listo y entendido

#!/bin/bash
# Programa para utilizar Break y Continue
# DBZ


echo "Sentencias break y continue"
for fil in $(ls)
do
    for nombre in {1..3}
    do
        if [ $fil = "10_download.sh" ]; then
            echo "Se encontro el archivo $fil y por eso se termian el bucle interno"
            echo "************************************************************"
            break;
        elif [[ $fil == 4* ]]; then
            echo "Se encontro el archivo $fil y continua"
            echo "************************************************************"
            continue;
        else
            echo "Nombre archivo:$fil _ $nombre"
        fi
    done
done

este es mi avance en el curso,con este curso de programaci贸n bash he reforzado mas el concepto de bucles que se usan en lenguajes de programaci贸n como java o php, en este caso aplicado al bash

P茅simo instructor, definitivamente saber sobre un 鈥淭EMA鈥 no significa que sepa explicarlo.

Es todo un tema viste

Ejemplo para leer contenido de archivos y saltear los comantarios

echo "Break y continue. Leo el contenido de los archivo"
echo "Quito los comentarios"
echo "No imprimo los archivo que comienzan con 1"

for file in $(ls *.sh)
do
	echo "--------------- $file ---------------------"
	while read -r linea; do
	    if [[ $linea =~ ^#.*$ ]]; then
			continue;	
		fi
		if [[ $file == 1* ]]; then
			break;
		fi
		echo "$linea"
	done < "$file"
done

# !/bin/bash
# Programa sobre el uso de break y continue
# Autor: Luber Cueva

echo "SENTENCIAS BREAK Y CONTINUE"

for file in $(ls)  
do
    for name in {1..4}
    do
        echo "Hola"
        if [ $file = "10_download.sh" ]; then
            break;
        elif [[ $file == 4* ]]; then
            continue;
        else           
            echo "File archivo: $file _ $name"
        fi

        echo "Chao"
    done
done

El efecto de break es que solo llega a imprimir un 鈥渉ola鈥 y termina el for de adentro. Luego pasar谩 al for de afuera, o sea que tendr谩 otro archivo (11_ 鈥).

SENTENCIAS BREAK Y CONTINUE
Hola
Hola
File archivo: 11_ifElseIfElse.sh _ 1
Chao

En cambio con continue, imprime varios 鈥淗ola鈥 y ya no los 鈥淐hao鈥 y es por que a partir del continue ya no ejecuta lo que est谩 a delante, sino que pasa a la siguiente iteraci贸n (continua con el archivo 4_ 鈥).

Hola
File archivo: 3_tipoOperadores.sh _ 3
Chao
Hola
File archivo: 3_tipoOperadores.sh _ 4
Chao
Hola
Hola
Hola
Hola
Hola
File archivo: 5_substitutionCommand.sh _ 1
Chao
Hola
File archivo: 5_substitutionCommand.sh _ 2
Chao

Que tema con Marco

por lo general continue se utiliza para poder saltar una iteraci贸n en especifico, ya que si quiero que mi programa salte el numero 3 de un bucle de 10 iteraciones simplemente se coloca continue a la iteraci贸n

Codigo:

# ! /bin/bash
# Programa para ejemplificar el uso de break y continue
# Autor: Jose Suarez

echo "Sentencias de Break y continue"
for fil in $(ls)
do
    for nombre in {1..4}
    do
        if [ $fil = "10_download.sh" ]; then
            break;
        elif [[ $fil == 4*  ]]; then
            continue;
        else
            echo "Nombre Archivo: $fil _ $nombre"
        fi
    done
done

Como desear铆a que bash soportase OOP 馃槄

Hola, dejo mis apuntes.

Saludos

# ! /bin/bash
# Programa para uso de break y continue
# Author Diego Beltran histagram @diegodevelops

echo "Break y continue"
for fil in $(ls)
do
    for nombre in {1..4}
    do
    if [ $fil = "10_download.sh" ]; then
        break;
    elif [[$file == 4* ]]; then
        continue;
    else
        echo "nombre del archivo es:$fil y cuenta del anidado es $nombre"
    fi
    done
done

#!/bin/bash

for i in {1..4}
do
    if [ $i -ne 3 ]; then
        if [ $i -eq 4 ]; then
            break
        fi
        for j in {a..z}
        do
            if [ "$j" == "n" ] || [ "$j" == "p" ]; then
                continue
            else
                echo "$j"
            fi
        done
    fi
done

Estar铆a bueno que explique la diferencia entre [ ], [[ ]], ( ) y (( ))

Para que no se compliquen mucho la vida les tengo un eejmplo mas sencillo y eficaz:
**break ** funciona para salir del bucle mientras que **continue **solo se detiene de donde esta y pasa a la siguiente iteracion (sin salirse del bucle).

# Continue
echo -e "\nUsando continue cuando i == 5"
for ((i=0; i<10;i++))
do
    if [ $i -eq 5 ]; then
        continue
    fi
    echo "Numero: $i"
done

Y esto es lo que imprime en consola

Usando continue cuando i == 5
Numero: 0
Numero: 1
Numero: 2
Numero: 3
Numero: 4
Numero: 6
Numero: 7
Numero: 8
Numero: 9

Como pudieron ver al cumplir la condicion del if el numero 5 no lo imprimio si no solo se lo salto por la palabra continue y continuo con los demas.

# Break
echo -e "\nUsando break cuando i == 5"
for ((i=0; i<10;i++))
do
    if [ $i -eq 5 ]; then
        break
    fi
    echo "Numero: $i"
done

Y esto es lo que imprime en consola.

Usando break cuando i == 5
Numero: 0
Numero: 1
Numero: 2
Numero: 3
Numero: 4

Y como pueden ver al cumplirse la condicion del if se salio del ciclo for gracias a palabra break.

  • 驴 C贸mo utilizar las sentencia break y continue ?
  1. Utilizar la sentencia break para salir de la ejecuci贸n de los loops for, while; es decir para la iteraci贸n.
  2. Utilizar la sentencia continue para continuar con la siguiente iteraci贸n.

No quedo claro la diferencia entre continue y break en el script.

  • Break se utiliza para salir de la ejecuci贸n de los ciclos for y while.
  • Continue se utiliza para continuar con la siguiente ejecuci贸n.

Ejecute el srcipt de la clase y los dos se comportaron como 鈥渃ontinue鈥.

El c贸digo hoy presentado no me funciono a mi en 2021 ya que el break solo terminaba el loop 鈥渇or nombre in {1鈥4}鈥 y segu铆a con el archivo 11 mostrando todo.
Buscando la soluci贸n que encontr茅 fue poner break 2; y me funciono

No me quedo claro el uso del break con esta clase. Por otro lado, no queda muy claro el uso del 鈥== *4鈥 en el elif.

Para reforzar la clase con mayor detalle y explicaci贸n
https://blogs.upm.es/estudiaciencia/bucles-y-condicionales/

Script escrito y probado en Ubuntu 18.04
5 echo "Continue and break sentences"
6 for file in $(ls) #OS command
7 do
8 for filename in {1鈥3}
9 do
10 if [[ $file == download_files ]]; then #stop printing
11 #the list of files when the file called "download_files"
12 #is found
13 break;
14 elif [[ $file == 17_* ]]; then #skip printing the files
15 #starting with "17_"
16 continue;
17 else
18 echo "Nombre de archivo (repeticion $filename): $file"
19 fi
20 done
21 done

gracias

6 Minutos de clase鈥l menos 3 de tema鈥
Excelente profesor, pero el exceso de la muletilla le resta mucha importancia, es virtualmente imposible no darse cuenta, y los comentarios anteriores lo validan.

#!/bin/bash

for file in $(ls)
do
    for number in {1..4}
    do
        if [ $file = "10_download.sh" ]; then
            break;
        elif [[ $file == 4* ]]; then
            continue;
        else
            echo "Filename: $file-$number"
        fi
    done
done