for (bucle)
Nos permite hacer bucles en base a una lista:
for variable in [lista] do comando(s)... done
También tiene el típico formato tipo lenguaje C:
for ((variable=valor_inicial; a <= limite ; incremento)) do comando(s)... done
#!/bin/bash for numeros in 1 2 3 4 5 6 7 8 9 do echo $numeros # cada numero en una linea separada done 1 2 3 4 5 6 7 8 9
for numeros in "1 2 3 4 5 6 7 8 9" # Todos los número en la misma linea. # Una lista entre comillas crea una única variable. do echo $numeros done 1 2 3 4 5 6 7 8 9
#!/bin/bash # Asociar cada planeta con su distancia del sol. for planet in "Mercury 36" "Venus 67" "Earth 93" "Mars 142" "Jupiter 483" do set -- $planet # divide los valores y crea parámetros posicionales ($1, $2 ...) # "--" evita problemas si $planet empieza con guiones o es una cadena vacía. echo "$1 $2,000,000 millas del sol" #-------2 tabuladores-añade ceros al parámetro $2 done Mercury 36,000,000 miles from the sun Venus 67,000,000 miles from the sun Earth 93,000,000 miles from the sun Mars 142,000,000 miles from the sun Jupiter 483,000,000 miles from the sun
parametros_originales=("$@")
#!/bin/bash LIMITE=9 for ((a=1; a < = LIMITE ; a++)) # Doble paréntesis y "LIMITE" sin "$". do echo -n "$a " # -n = no añade retorno de carro done echo for ((a=1; a < = LIMITE ; a=a+2)) # para ir de 2 en 2 do echo -n "$a " # -n = no añade retorno de carro done echo 1 2 3 4 5 6 7 8 9 1 3 5 7 9
$ for ip in {10..15} {23..27} do echo 10.0.0.$ip done 10.0.0.10 10.0.0.11 10.0.0.12 10.0.0.13 10.0.0.14 10.0.0.15 10.0.0.23 10.0.0.24 10.0.0.25 10.0.0.26 10.0.0.27
{a..f}
Cuando usamos un bucle for del siguiente tipo y hay espacios en el listado nos encontramos que la salida no son líneas completas (hasta el retorno de carro /n) si no que el salto de línea lo hace el espacio:
for LINEA in $(find _directorio_ _que_buscar_ ) do echo $LINEA done
Para ello debemos poner el comando (export IFS=$' ') antes del for:
export IFS=$' ' for LINEA in $(find _directorio_ _que_buscar_ ) do echo $LINEA done
Y así conseguimos que el salto de línea sea de nuevo (/n) y no los espacios.