Bash Loop a través de una lista de cuerdas

Bash Loop a través de una lista de cuerdas

Se puede iterarse una lista de cadenas o matriz o secuencia de elementos utilizando para bucle en Bash. En este tutorial, se muestra cómo puede iterar la lista de cadenas en Bash por For Loop. Si eres novato, es programación bash, entonces puedes leer el tutorial sobre los ejemplos de bash para bucle antes de comenzar este tutorial.

Ejemplo-1: iterando una cadena de múltiples palabras dentro de bucle

Cree un archivo bash llamado 'for_list1.sh 'y agregue el siguiente script. Se utiliza un valor de cadena con espacios dentro de lo bucle. Por defecto, el valor de la cadena está separado por el espacio. Para bucle dividirá la cadena en palabras e imprimirá cada palabra agregando una nueva línea.

#!/bin/bash
# Lea una cadena con espacios usando para bucle
Para el valor en la programación me gusta
hacer
Echo $ valor
hecho

Producción:

$ bash for_list1.mierda

Ejemplo-2: iterando una variable de cadena usando para bucle

Cree un archivo bash llamado 'for_list2.sh 'y agregue el siguiente script. Asignar un texto a la variable, Stringval y lea el valor de esta variable usando para bucle. Este ejemplo también funcionará como el ejemplo anterior y dividirá el valor de la variable en palabras basadas en el espacio.

#!/bin/bash
# Defina una variable de cadena con un valor
StringVal = "Bienvenido a Linuxhint"
# Itera la variable de cadena usando para bucle
para val en $ stringval; hacer
echo $ val
hecho

Producción:

$ bash for_list2.mierda

Ejemplo-3: iterar una matriz de valores de cadena

Cree un archivo bash llamado 'for_list3.sh 'y agregue el siguiente script. Se declara una matriz de valores de cadena con el tipo en este script. Dos valores en la matriz que contienen espacio son 'Menta Linux' y 'Red Hat Linux'. Este script generará la salida dividiendo estos valores en múltiples palabras e impresión como un valor separado. Pero esta no es la salida adecuada. La solución de este tipo de problema se muestra en el siguiente ejemplo.

#!/bin/bash
# Declarar una variedad de cadenas con tipo
declarar -a stringArray = ("Linux Mint" "Fedora"
"Red Hat Linux" "Ubuntu" "Debian")
# Itera la matriz de cadenas usando para bucle
para val en $ StringArray [@]; hacer
echo $ val
hecho

Producción:

$ bash for_list3.mierda

Ejemplo-4: Imprima el valor de cadena de múltiples palabras como un solo valor

Cree un archivo bash llamado 'for_list4.sh 'y agregue el siguiente script. En este ejemplo, cada elemento de la variable de matriz, Stringarray contiene valores de dos palabras. Para imprimir cada valor sin dividir y resolver el problema del ejemplo anterior, solo necesita encerrar la variable de matriz con cita doble dentro de la bucle.

#!/bin/bash
# Declarar una matriz de cadenas con el tipo
declarar -a stringArray = ("Windows XP" "Windows 10"
"Windows Me" "Windows 8.1 "" Windows Server 2016 ")
# Lea los valores de la matriz con espacio
para val en "$ StringArray [@]"; hacer
echo $ val
hecho

Producción:

$ bash for_list4.mierda

Ejemplo-5: iterando los valores de cadena de una matriz usando '*'

Cree un archivo bash llamado 'for_list5.sh 'con el siguiente código. Aquí, el símbolo '*' se usa para leer todos los valores de cadena de la matriz. El primero para el bucle se usa para mostrar valores de matriz en múltiples líneas y el segundo para el bucle se usa para mostrar los valores de la matriz en una sola línea.

#!/bin/bash
#Declare una matriz de cadenas
Languagearray = ("php" "java" "c#" "c ++" "VB.Net "" Python "" Perl ")
# Imprimir valores de matriz en líneas
Echo "Imprima todos los elementos en nueva línea"
para val1 en $ languageArray [*]; hacer
Echo $ val1
hecho
eco ""
# Imprimir valores de matriz en una línea
Echo "Imprima todos los elementos en una sola línea"
para val2 en "$ languageArray [*]"; hacer
echo $ val2
hecho

Producción:

$ bash for_list5.mierda

Ejemplo-6: iterando valores de cadena separados por coma

Cree un nuevo archivo bash llamado 'for_list6.sh 'con el siguiente código. Aquí, coma (,) se usa para dividir los valores de cadena. IFS La variable se usa para establecer el separador de campo.

#!/bin/bash
DataList = "HTML5, CCS3, Bootstrap, jQuery"
Field_separator = $ ifs
# Establecer la coma como separador de campo interno para la lista de cadenas
Ifs =,
para Val en $ Datalist;
hacer
echo $ val
hecho
Ifs = $ field_separator

Producción:

$ bash for_list6.mierda

Ejemplo-7: leer múltiples matrices de cadena juntas

Cree un archivo bash llamado 'for_list7.sh 'y agregue el siguiente script. En este ejemplo, dos matrices de cadenas se definen y se combinan en otra matriz. El exterior para el bucle se usa para leer la matriz combinada y el bucle interno para leer cada matriz interna.

#! /bin/bash
str_array1 = ("Magento 2.2.4 "" WooCommerce ")
str_array2 = ("Codeignitor" "Laravel")
Combine = (str_array1 str_array2)
Para Arritem en $ Combine [@]
hacer
eval 'para val en "$ ' $ arritem '[@]"; do echo "$ val"; hecho'
hecho

Producción:

$ bash for_list7.mierda

Ejemplo-8: Uso del patrón para leer la lista de cuerdas

Crear un nuevo archivo bash llamado for_list8.mierda Con el siguiente código. Aquí, ' /, /' El patrón se usa para dividir los valores de cadena basados ​​en la coma.

#!/bin/bash
# Definir una lista de variables de cadena
StringList = WordPress, Joomla, Magento
# Use la coma como separador y aplique como patrón
para val en $ StringList //,/
hacer
echo $ val
hecho

Producción:

$ bash for_list8.mierda

Espero que los ejemplos de este tutorial lo ayuden a comprender el uso de en bucle Para iterar la lista de cuerdas, para un video sobre este tema, consulte a continuación: