Contenido del curso
Contenido del curso
Esteban Martini
John Florez
Daniel Páez
Yorlys Oropeza
Eleiny Bello
Miguel Angel Reyes Moreno
Franco Manca
Jose Miguel Diaz
Fredy Mendoza Vargas
Diego Andrés Beltrán Garavito
Jordan Arellano Rosero
Marconi Poveda
Kevin Castellano
DAVID EDUARDO BAEZ SANCHEZ
Joserra Parada Fontaiña
valentina stephany kassar acuña
Leonardo Perez Hurtado
Matias Gabriel Pierri
Israel Romero Garcia
Joan Benavides Olivera
KEVIN FIGUEROA
Marvin Javier Santos Fernández
Jaime Escobar
Mario Alexander Vargas Celis
jesus manuel vergara arias
Roberto Palacios
les dejo el codigo un poco modulado, con opciones:
# ! /bin/bash # Programa para ejemplificar el uso de la sentencia de iteración for # Autor: Marco Toscano Freire - @martosfre function iterarListaNumeros { arregloNumeros=(1 2 3 4 5 6) echo "Iterar en la Lista de Números" for num in ${arregloNumeros[*]} do echo "Número: $num" done } function iterarCadena { echo "Iterar en la lista de Cadenas" for nom in "Marco" "Pedro" "Luis" "Daniela" do echo "Nombre : $nom" done } function iterarArchivos { echo "Iterar en Archivos" for fil in * do echo "Nombre archivo: $fil" done } function iterarComando { echo "Iterar utilizando un comando" for fil in $(ls) do echo "Nombre archivo: $fil" done } function iteracionTradicional { echo "Iterar utilizando el formato tradcional" for ((i=1; i<10; i++)) do echo "Número: $i" done } option=0 echo -e "\n elija una opcion 1 iterar lista de numeros 2 iterar lista de cadenas 3 iterar en Archivos 4 iterar utilizando comando 5 iteracion tradicional" read -n1 option echo -e "\n" case $option in 1) iterarListaNumeros ;; 2) iterarCadena ;; 3) iterarArchivos ;; 4) iterarComando ;; 5) iteracionTradicional;; *) echo "opcion desconocida";; esac
Gracias por el aporte.
En lo personal me resultó útil para descomprimir archivos y darle nombre.
zipFiles=( "cajas-1" "frutas-1" "frutos-secos-legumbres-1" "frutos-secos-legumbres-2" "huevos-1" "verduras-1" "verduras-2" "verduras-3" ) echo "Descomprimir archivos ciclicamente" for fil in ${zipFiles[*]} do unzip "$fil.zip" -d "$fil" done
Excelente aporte
Me gustaría que por sentencia, vaya mostrando el resultado e explicándolo. Poco a poco, no todo al final.
Hubiera sido mejor, es cierto.
Resumen de la clase
Sentencia for loop
Existen 3 formas de realizar un ciclo en bash:
for i in lista do #Instrucciones done
for i in $(seq rango) do #Instrucciones done
El comando seq puede ser utilizado de las siguientes formas:
seq [último valor]seq [primer valor] [último valor]seq [primer valor] [incremento] [último valor]for (( inicializador; condición; contador )) do #Instrucciones done
Apuntes del curso: https://github.com/francomanca93/bash-shell
Una explicación buena de los loops
Gracias
Hola, dejo mi script.
# ! /bin/bash # Programa para uso de for loop # Author Diego Beltran histagram @diegodevelops arregloNum=(1 2 3 4 5 6) echo "iterar en lista de numeros" for num in ${arregloNum[*]} do echo "Número: $num" done echo "Iterar lista de cadenas" for nom in "Diego" "Andres" "Mariana" "Beatriz" do echo "Nombre es: $nom" done echo "Iterar en Archivos" for file in * do echo "nombre archivo es: $file" done echo "Iterar usando comando" for fil in $(ls) do echo "nombre archivo ls: $fil" done echo "Iterar usando formato tradicional" for (( i=1; i<10; i++ )) do echo "Numero es for: $i" done``` Saludos.
Para los puristas si utilizan otro kernel: Shift + pg up or down
Los puristas ya lo sabían ;-)
Gracias por el aporte
Entendido
#!/bin/bash # Programa para utilziat loops # DBZ arregloNumeros=(1 2 3 4 5 6) echo "Iterar en la Lista de Números" for num in ${arregloNumeros[*]} do echo "Número:$num" done echo "******************************************" echo "Iterar en la lista de Cadenas" for nom in "David" "Ana Maria" "Diana" "Isabela" "Norma" do echo "Nombres:$nom" done echo "******************************************" echo "Iterar en Archivos" for fil in *.sh do echo "Nombre archivo:$fil" done echo "******************************************" echo "Iterar utilizando un comando" for fil in $(ls) do echo "Nombre archivo:$fil" done echo "******************************************" echo "Iterar utilizando el formato tradcional" for ((i=1; i<15; i++)) do echo "Número:$i" done
Iterating over ls output is fragile. Use globs. Iterar sobre el comando ls es frágile, mejor usar comodín.
for fil in * do [[ -e $fil ]] || break echo "$fil" done
# imprimir todos los valores echo "Arreglo de Números: ${arregloNumeros[*]}" # imprime tamaño de los arreglos echo "Tamaño del arreglo de Números: ${#arregloNumeros[*]}" # imprimir las la posicion 3 de los arreglos echo "Posición 3 del arreglo de Números: ${arregloNumeros[3]}" # imprimir los indeces de los arreglos echo "Indeces de los arreglo de Números: ${!arregloNumeros[@]}" # para este caso @ funciona igual que *
Me gusto mucho esta clase porque vengo con un background de Backend con Django y me permitio terminar de entender de donde proviene la sintaxis de Python con su mismisimo for i in range()
Mi pequeño aporte :)
zipFiles=( "folder1" "folder2" "folder3" "folder4" "folder5" "folder6" "folder7" "folder8" )
echo "Comprimir ficheros en un ciclo" echo ""
for ((i=0; i< ${#zipFiles[*]}; i++)) do if [ -d ${zipFiles[i]} ]; then zip -r "${zipFiles[i]}.zip" "${zipFiles[i]}" else mkdir ${zipFiles[i]} zip -r "${zipFiles[i]}.zip" "${zipFiles[i]}" fi done
Script escrito y probado en Ubuntu 18.04 5 array_fib=(1 1 2 3 5 8) 6 array_chain=("first" "second" "third" "fourth" "fifth" "sixth") 7 counter=0 8 9 #Print the values of the fib list 10 echo "Iteració nde la lista de nums fib" 11 12 for num in ${array_fib[]} 13 do 14 echo "Value $counter: $num" 15 counter=$((counter+1)) 16 done 17 counter=0 18 echo -e "" 19 20 #Print the values of the chain list 21 echo "Iteraci�n� de la lista de chains" 22 23 for chain in ${array_chain[]} 24 do 25 echo "Value $counter: $chain" 26 counter=$((counter+1)) 27 done 28 counter=0 29 echo -e "" 30 31 #Print a list of files in the actual directory (where this file 32 # is executed) 33 echo "Listar los file del directorio especificado" 34 35 for file in * 36 do 37 counter=$((counter+1)) 38 echo "File $counter: $file" 39 done 40 counter=0 41 echo -e "" 42 43 #Make the iteration using a OS command 44 echo "Iteracion de lista mediante un comando" 45 46 for item in $(ls) #'ls' -> OS command 47 do 48 counter=$((counter+1)) 49 echo "File $counter: $item" 50 done 51 counter=0 52 echo -e "" 53 54 #Make the iteration using the "for loop three expression" 55 echo "Iteracion mediante el uso de la estructura clasica de for" 56 57 for ((i=1; i<=10; i++)){ 58 counter=$((counter+1)) 59 echo -e "Num $counter" 60 } 61 counter=0 62 echo -e ""
#!/bin/bash #By Kevin J Figueroa ar=(1 1 2 3 5 8 13 21) st=(perro gato caballo canario hormiga) for i in ${ar[*]}; do echo "array[$((c++))]: "$i done echo -en "\n" c=0 for i in ${st[*]}; do echo "string[$((c++))]: $i" done c=0 echo -en "\n" for i in *; do echo "file[$((c++))]: $i" done c=0 echo -en "\n" for i in $(ls) do echo "file[$((c++))]: $i" done
function iterarList { local int=0 local arrayList=("${@}") for parm in "$@"; do int=$((int + 1)) echo " $int .---- $parm" done for parm in "${arrayList[@]}"; do int=$((int + 1)) echo " $int .==== $parm" done } iterarList "$@" iterarList "paso>1" "paso>2" "paso>3" "paso>4"
El bucle for en Bash es una estructura de control que te permite iterar sobre una lista de elementos o realizar acciones un número determinado de veces. Su sintaxis básica es la siguiente:
### Sintaxis básica:
for variable in lista\_de\_elementos; do   \# Código que se ejecutará para cada elemento done
### Ejemplos:
1. **Iterar sobre una lista de valores:**
for i in 1 2 3 4 5; do   echo "Número: $i" done
Este bucle imprimirá los números del 1 al 5.
2. **Iterar sobre archivos en un directorio:**
for file in /ruta/al/directorio/\*; do   echo "Archivo: $file" done
Este ejemplo iterará sobre todos los archivos en el directorio especificado.
3. **Usar seq para iterar un rango de números:**
for i in $(seq 1 10); do   echo "Número: $i" done
Esto imprimirá los números del 1 al 10 usando el comando seq.
4. **Bucle for en una sola línea (compacto):**
for i in {1..5}; do echo "Número: $i"; done
Esto hace lo mismo que los ejemplos anteriores, pero en una sola línea.
### Usos avanzados:
- **Iterar sobre el resultado de un comando:**
for user in $(cat /etc/passwd); do   echo "Usuario: $user" done
Este ejemplo iterará sobre cada línea del archivo /etc/passwd, que contiene información sobre los usuarios del sistema.
El bucle for en Bash es muy flexible y se utiliza comúnmente para automatizar tareas repetitivas o para procesar listas de elementos.
Bash se parece a python o lo contrario. Total es que se parecen:
bash:
for num in ${array[*]}
do this
done
python:
for index in range(len(array)):
print(f'index: {index} - value: {value[index]}
Codigo
#!/bin/bash # 16_forLoops.sh # Author: Roberto Palacios arrayNumbers=(1 2 3 4 5 6) echo -e "\n*---Iteration list of numbers---*" for num in ${arrayNumbers[*]} do echo "Number: $num" done echo -e "\n*---Iteration list of chain---*" for name in "Pedro" "Juan" "Maria" do echo "Names: $name" done echo -e "\n*---Iteraration on Files---*" for file in * do echo "File Name: $file" done echo -e "\n*---Iteration using a command---*" for file in $(ls) do echo "File name: file" done echo -e "\n*---Iteration using the Traditional way---*" for ((i=1; i<10; i++)) do echo "Numbers: $i" done