Bash Loop a través de una lista de cadenas

Bash Loop Through List Strings



Se puede iterar una lista de cadenas o matriz o secuencia de elementos usando por bucle en bash. En este tutorial se muestra cómo puede iterar la lista de cadenas en Bash mediante el bucle for mediante el uso de varios ejemplos de scripts de bash. Si eres un novato en programación bash, puedes leer el tutorial en BASH para ejemplos de bucle antes de comenzar este tutorial.

Cree un archivo bash llamado ' for_list1.sh 'Y agregue la siguiente secuencia de comandos. Se usa un valor de cadena con espacios dentro del bucle for. De forma predeterminada, el valor de la cadena está separado por espacio. For loop dividirá la cadena en palabras e imprimirá cada palabra agregando una nueva línea.







#! / bin / bash
# Leer una cadena con espacios usando for loop
porvalorenMe gusta programar
hacer
echo $ valor
hecho

Producción:



$intentofor_list1.sh



Ejemplo 2: iteración de una variable de cadena usando el bucle for

Cree un archivo bash llamado ' for_list2.sh 'Y agregue la siguiente secuencia de comandos. Asignar un texto a la variable, StringVal y lea el valor de esta variable usando for loop. Este ejemplo también funcionará como el ejemplo anterior y dividirá el valor de la variable en palabras según el espacio.





#! / bin / bash
# Definir una variable de cadena con un valor
StringVal='Bienvenido a linuxhint'

# Iterar la variable de cadena usando for loop
porhorasen $ StringVal;hacer
echo $ horas
hecho

Producción:

$intentofor_list2.sh



Ejemplo-3: iterar una matriz de valores de cadena

Cree un archivo bash llamado ' for_list3.sh 'Y agregue la siguiente secuencia de comandos. Una matriz de valores de cadena se declara con tipo en este script. Dos valores en la matriz que contienen espacio son Linux Mint y Red Hat Linux . Este script generará la salida dividiendo estos valores en varias palabras e imprimiendo como valor separado. Pero este no es el resultado adecuado. La solución de este tipo de problema se muestra en el siguiente ejemplo.

#! / bin / bash

# Declare una matriz de cadena con tipo
declare -a StringArray=('Linux Mint' 'Fedora' 'Red Hat Linux' 'Ubuntu' 'Debian' )

# Itere la matriz de cadenas usando for loop
porhorasen $ {StringArray [@]};hacer
echo $ horas
hecho

Producción:

$intentofor_list3.sh

Ejemplo-4: Imprima el valor de cadena de varias palabras como un solo valor

Cree un archivo bash llamado ' for_list4.sh 'Y agregue la siguiente secuencia de comandos. 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 doble cita dentro del bucle for.

#! / bin / bash

# Declare una matriz de cadenas con tipo
declare -a StringArray=('Windows XP' 'Windows 10' 'Windows ME' 'Windows 8.1'
'Windows Server 2016' )

# Leer los valores de la matriz con espacio
porhorasen '$ {StringArray [@]}';hacer
echo $ horas
hecho

Producción:

$intentofor_list4.sh

Ejemplo 5: iteración de valores de cadena de una matriz con '*'

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 primer ciclo for se usa para mostrar valores de matriz en varias líneas y el segundo ciclo for se usa para mostrar valores de matriz en una sola línea.

#! / bin / bash

# Declarar una matriz de cadenas
LanguageArray=('PHP' 'Java' 'C#' 'C++' 'VB.Net' 'Pitón' 'Perl')

# Imprimir valores de matriz en líneas
echo 'Imprime todos los elementos en una nueva línea'
porval1en $ {LanguageArray [*]};hacer
echo $ val1
hecho

echo ''

# Imprimir valores de matriz en una línea
echo 'Imprime todos los elementos en una sola línea'
porval2en '$ {LanguageArray [*]}';hacer
echo $ val2
hecho
echo ''

Producción:

$intentofor_list5.sh

Ejemplo 6: iteración de valores de cadena separados por comas

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

#! / bin / bash
Lista de datos='HTML5, CCS3, BootStrap, JQuery'
Field_Separator=$ IFS

# establecer coma como separador de campo interno para la lista de cadenas
IFS=,
porhorasen $ DataList;
hacer
echo $ horas
hecho

IFS=$ Field_Separator

Producción:

$intentofor_list6.sh

Ejemplo 7: lectura de varias matrices de cadenas juntas

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

#! / bin / sh
str_array1=('Magento 2.2.4' 'WooCommerce')
str_array2=('CodeIgnitor' 'Laravel')
combinar=(str_array1 str_array2)
poradministradoen $ {combinar [@]}
hacer
eval 'para val en' $ {'$ arrItem'[@]}'; haz eco de '$ val'; hecho '
hecho

Producción:

$intentofor_list7.sh

Ejemplo-8: uso de patrón para leer la lista de cadenas

Crea un nuevo archivo bash llamado for_list8.sh con el siguiente código. Aquí, ‘/, /’ El patrón se utiliza para dividir los valores de cadena en función de una coma.

#! / bin / sh

# Definir una lista de variables de cadena
stringList= WordPress, Joomla, Magento

# Use coma como separador y aplique como patrón
porhorasen $ {stringList //, /}
hacer
echo $ horas
hecho

Producción:

$intentofor_list8.sh

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