Bash Loop através de uma lista de strings

Bash Loop através de uma lista de strings

Uma lista de strings ou matriz ou sequência de elementos pode ser iterada usando para Loop in Bash. Como você pode iterar a lista de strings no Bash por loop é mostrado neste tutorial usando vários exemplos de scripts de bash. Se você é iniciante, é uma programação de bash, você pode ler o tutorial sobre exemplos de loop bash para iniciar este tutorial.

Exemplo 1: iterando uma sequência de várias palavras para o loop

Crie um arquivo bash chamado 'for_list1.sh 'e adicione o seguinte script. Um valor de string com espaços é usado para o loop. Por padrão, o valor da string é separado pelo espaço. Para o loop dividirá a string em palavras e imprimir cada palavra adicionando uma nova linha.

#!/BIN/BASH
# Leia uma string com espaços usando o loop
Para valor em eu gosto de programar
fazer
eco $ valor
feito

Saída:

$ bash for_list1.sh

Exemplo 2: iterando uma variável de string usando o loop

Crie um arquivo bash chamado 'for_list2.sh 'e adicione o seguinte script. Atribua um texto à variável, StringVal e leia o valor dessa variável usando o loop. Este exemplo também funcionará como o exemplo anterior e dividirá o valor da variável em palavras com base no espaço.

#!/BIN/BASH
# Defina uma variável de string com um valor
StringVal = "Bem -vindo ao Linuxhint"
# Itera a variável da string usando o loop
para val em $ stringval; fazer
eco $ val
feito

Saída:

$ bash for_list2.sh

Exemplo-3: Itreate uma matriz de valores de string

Crie um arquivo bash chamado 'for_list3.sh 'e adicione o seguinte script. Uma matriz de valores de string é declarada com tipo neste script. Dois valores na matriz que contêm espaço são 'Linux Mint' e 'Red Hat Linux'. Este script gerará a saída dividindo esses valores em várias palavras e imprimindo como valor separado. Mas esta não é a saída adequada. A solução desse tipo de problema é mostrada no próximo exemplo.

#!/BIN/BASH
# Declare uma matriz de string com tipo
Declare -Um StringArray = ("Linux Mint" "Fedora"
"Red Hat Linux" "Ubuntu" "Debian")
# Itera a matriz de strings usando o loop
para val em $ stringArray [@]; fazer
eco $ val
feito

Saída:

$ Bash for_list3.sh

Exemplo 4: Imprima várias palavras, valor de string como um único valor

Crie um arquivo bash chamado 'for_list4.sh 'e adicione o seguinte script. Neste exemplo, todos os elementos da variável de matriz, StringArray contém valores de duas palavras. Para imprimir cada valor sem dividir e resolver o problema do exemplo anterior, você só precisa incluir a variável da matriz com citação dupla dentro de loop.

#!/BIN/BASH
# Declare uma matriz de string com tipo
Declare -a stringArray = ("Windows XP" "Windows 10"
"Windows Me" "Windows 8.1 "" Windows Server 2016 ")
# Leia os valores da matriz com espaço
para val em "$ stringArray [@]"; fazer
eco $ val
feito

Saída:

$ bash para_list4.sh

Exemplo 5: iterando valores de string de uma matriz usando '*'

Crie um arquivo bash chamado 'for_list5.sh 'com o seguinte código. Aqui, o símbolo '*' é usado para ler todos os valores da string da matriz. O primeiro para loop é usado para exibir valores de matriz em várias linhas e o segundo para loop é usado para exibir valores de matriz em uma única linha.

#!/BIN/BASH
#Declare uma matriz de string
LinguageArray = ("php" "java" "c#" "c ++" "vb.Net "" python "" perl ")
# Valores da matriz de impressão nas linhas
eco "Imprima todos os elementos em nova linha"
Para Val1 em $ LinguageArray [*]; fazer
eco $ val1
feito
eco ""
# Valores da matriz de impressão em uma linha
eco "Imprima todos os elementos em uma única linha"
para Val2 em "$ LinguageArray [*]"; fazer
eco $ val2
feito

Saída:

$ bash for_list5.sh

Exemplo-6: Valores da string separados por vírgula iterando

Crie um novo arquivo Bash chamado 'for_list6.sh 'com o seguinte código. Aqui, vírgula (,) é usado para dividir os valores da string. Ifs A variável é usada para definir o separador de campo.

#!/BIN/BASH
Datalist = "html5, ccs3, bootstrap, jQuery"
Field_separator = $ ifs
# Defina a vírgula como separador de campo interno para a lista de strings
Ifs =,
para Val em $ Datalist;
fazer
eco $ val
feito
Ifs = $ field_separator

Saída:

$ bash for_list6.sh

Exemplo 7: Lendo várias matrizes de string juntas

Crie um arquivo bash chamado 'for_list7.sh 'e adicione o seguinte script. Neste exemplo, duas matrizes de string são definidas e combinadas em outra matriz. O loop externo é usado para ler a matriz combinada e o interior para loop é usado para ler cada matriz interna.

#! /BIN/BASH
str_array1 = ("Magento 2.2.4 "" WooCommerce ")
str_array2 = ("codeignitor" "Laravel")
Combine = (str_array1 str_array2)
Para o Arritem em $ Combine [@]
fazer
avaliar 'para val em "$ ' $ arrritem '[@]"; do echo "$ val"; feito'
feito

Saída:

$ bash for_list7.sh

Exemplo 8: Usando o padrão para ler a lista de strings

Crie um novo arquivo Bash nomeado for_list8.sh Com o seguinte código. Aqui, ' /, /' O padrão é usado para dividir os valores de string com base em vírgula.

#!/BIN/BASH
# Defina uma lista de variável de string
stringList = wordpress, joomla, magento
# Use vírgula como separador e aplique como padrão
para val em $ stringList //,/
fazer
eco $ val
feito

Saída:

$ Bash for_list8.sh

Espero que os exemplos deste tutorial o ajudem a entender o uso de para loop Para iterar a lista de strings, para um vídeo sobre este tópico, veja abaixo: