A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

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 26

Preguntas 4

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta 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

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.

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

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

Este curso lo deber铆an renovar

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

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

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

Que tema con Marco

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.

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
#!/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