GNU/Linux >> Tutoriales Linux >  >> Linux

Bash para ejemplos de bucle

Hay muchas ocasiones en un script de shell en las que desea ejecutar repetidamente una declaración o un grupo de declaraciones hasta que se produzca alguna condición específica. Además, es posible que desee ejecutar un grupo de instrucciones para cada elemento de una lista determinada. El shell proporciona tres construcciones de bucle para estas situaciones:las construcciones for, while y till.

El ciclo for le permite especificar una lista de valores. Se ejecuta un grupo de instrucciones para cada valor de la lista.

Para la sintaxis del bucle

El bucle for en el shell toma una lista de palabras (cadenas) como argumento. El número de palabras en la lista determina el número de veces que se ejecutan las sentencias en el bucle for. La sintaxis del bucle for es:

for variable in element1 element2 element3 
do
	commands 
done

donde:

  • variable :Es cualquier nombre de variable.
  • elementos (argument_list) :puede ser cualquier lista de palabras, cadenas o números, y puede ser literal o generarse mediante un comando de shell o un metacarácter de línea de comando de shell.
  • comandos :Los comandos pueden ser cualquier comando del sistema operativo, un programa de usuario, un script de shell o una declaración de shell que devuelve (produce) una lista.

El valor de la variable var se establece en la primera palabra de la lista la primera vez que se pasa por el bucle. La segunda vez que pasa por el bucle, su valor se establece en la segunda palabra de la lista, y así sucesivamente. El ciclo termina cuando var ha tomado cada uno de los valores de la lista de argumentos, a su vez, y no quedan argumentos.

La lista de argumentos de bucle for

La lista de argumentos en un ciclo for puede ser cualquier lista de palabras , cadenas o números . Genere la lista de argumentos usando cualquiera de los siguientes métodos (o una combinación de métodos):

  • Usar una lista explícita
  • Usar el contenido de una variable
  • Usar argumentos de línea de comandos
  • Usar sustitución de comandos
  • Usar nombres de archivos en sustitución de comandos

Ejemplo 1:bucle For utilizando una lista explícita para especificar argumentos

Cuando se enumeran argumentos para un bucle for, se denominan lista explícita. Una lista explícita es la forma más simple de una lista de argumentos. El bucle se ejecuta una vez para cada elemento de la lista. El siguiente ejemplo es un bucle for que usa una lista explícita de elementos:

#!/bin/bash
for fruit in apple orange banana peach kiwi 
do
    echo "Value of fruit is: $fruit"
done

La salida de este ciclo for es:

Value of fruit is: apple 
Value of fruit is: orange 
Value of fruit is: banana 
Value of fruit is: peach 
Value of fruit is: kiwi

Ejemplo 2:Bucle For usando contenido variable para especificar argumentos

Cuando los argumentos están en una variable y se ejecuta la sentencia, se sustituyen los contenidos de la variable. En el siguiente ejemplo, el texto ingresado en el indicador se convierte en el valor de la variable INPUT. Esta variable representa la lista de argumentos de la construcción for. Por lo tanto, el texto en INPUT se divide en palabras o tokens según el espacio en blanco.

$ cat ex1.sh 
#!/bin/bash
# Script name: ex1.sh
echo "Enter some text: \c" 
read INPUT
for var in $INPUT 
do
	echo "var contains: $var"
done
$ ./ex1.sh
Enter some text: I like the Bash shell. 
var contains: I
var contains: like
var contains: the
var contains: Korn
var contains: shell.

Ejemplo 3:bucle For utilizando argumentos de línea de comandos para especificar argumentos

En el siguiente ejemplo, el texto ingresado en la línea de comando se convierte en la lista de argumentos de la construcción for. Por lo tanto, el texto de la línea de comandos se divide en palabras o tokens en función de los espacios en blanco.

$ cat ex2.sh
#!/bin/bash
# Script name: ex2.sh
for var in $* 
do
	echo "command line contains: $var"
done
$ ./ex2.sh I am The Geek.
command line contains: I
command line contains: am
command line contains: The
command line contains: Geek.

Ejemplo 4:bucle For utilizando la sustitución de comandos para especificar argumentos

La sintaxis para la sustitución de comandos en un shell Bash es:

for var in `cmd_sub`

El siguiente ejemplo utiliza la salida del comando cat como lista de argumentos.

$ cat fruit1 
apple 
orange 
banana 
peach
kiwi
$ cat ex4.sh 
#!/bin/bash
# Script name: ex4.sh
for var in `cat fruit2` 
do
	echo "var contains: $var"
done
$ ./ex4.sh
var contains: Apple 
var contains: Orange 
var contains: Banana 
var contains: Peach 
var contains: Kiwi

Si el archivo que contiene la lista tenía el siguiente formato, ¿cuál es el resultado del bucle for?

$ cat fruit3
Apple Orange Banana Peach Kiwi
$ cat ex5.sh 
#!/bin/bash
# Script name: ex5.sh
for var in `cat fruit3` 
do
	echo "$var"
done
$ ./ex5.sh
Apple 
Orange 
Banana 
Peach 
Kiwi

En el ejemplo anterior, los resultados no cambian. La variable IFS es cualquier espacio en blanco, por lo que tanto un retorno de carro como un espacio o tabulación separan cada campo en el archivo.

Ejemplo 5:bucle For usando nombres de archivo en la sustitución de comandos para especificar argumentos

Algunos comandos proporcionan nombres de archivos y nombres de directorios como salida. En el siguiente ejemplo, el shell sustituye la salida del comando, ls /etc/p*(/etc/passwd/etc/profile, etc.), como lista de argumentos para el bucle for.

$ cat ex7.sh 
#!/bin/bash
# Script name: ex7.sh
for var in `ls /etc/p*`
do
	print "var contains: $var"
done
# ./x.sh 
var contains: /etc/passwd
var contains: /etc/passwd-
var contains: /etc/printcap
var contains: /etc/profile
....
Bash ejemplos de bucles if (si entonces fi, si entonces elif fi, si entonces más fi)


Linux
  1. Bash For Loop Guía y ejemplos

  2. ¿Paralelizar un Bash For Loop?

  3. El Bash'?

  4. Ejemplos de ciclos for y while de Bash

  5. Bucle for anidado

35 ejemplos de secuencias de comandos Bash

Bash Scripting – Para bucle explicado con ejemplos

Bash For Loops con ejemplos

Bash For Loop:la guía más práctica

El Bash FOR Loop explicado y simplificado

Bash Script for Loop explicado con ejemplos