Bash Loop por meio de uma lista de strings

Bash Loop Through List Strings



Uma lista de strings ou matriz ou sequência de elementos pode ser iterada usando para loop em bash. Como você pode iterar a lista de strings no Bash por meio do loop for, é mostrado neste tutorial usando vários exemplos de script bash. Se você é novato em programação bash, você pode ler o tutorial sobre BASH para exemplos de loop antes de iniciar este tutorial.

Crie um arquivo bash chamado ‘ for_list1.sh ’E adicione o seguinte script. Um valor de string com espaços é usado no loop for. Por padrão, o valor da string é separado por espaço. O loop For dividirá a string em palavras e imprimirá cada palavra adicionando uma nova linha.







#! / bin / bash
# Leia uma string com espaços usando o loop for
paravalornoEu gosto de programação
Faz
jogou fora $ valor
feito

Saída:



$bashfor_list1.sh



Exemplo-2: Iterando uma variável de string usando o loop for

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 for. 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'

# Iterar a variável string usando o loop for
parahorasno $ StringVal;Faz
jogou fora $ horas
feito

Saída:

$bashfor_list2.sh



Exemplo-3: Iterar 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 irá gerar a saída dividindo esses valores em várias palavras e imprimindo como um valor separado. Mas esta não é a saída adequada. A solução desse tipo de problema é mostrada no próximo exemplo.

#! / bin / bash

# Declara um array de string com type
declarar -para StringArray=('Linux Mint' 'Fedora' 'Red Hat Linux' 'Ubuntu' 'Debian' )

# Itere a matriz de string usando o loop for
parahorasno $ {StringArray [@]};Faz
jogou fora $ horas
feito

Saída:

$bashfor_list3.sh

Exemplo 4: Imprimir o valor da string de várias palavras como um único valor

Crie um arquivo bash chamado ‘ for_list4.sh ’E adicione o seguinte script. Neste exemplo, cada elemento 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 do array com aspas duplas dentro de um loop.

#! / bin / bash

# Declara uma matriz de string com tipo
declarar -para StringArray=('Windows XP' 'Windows 10' 'Windows ME' 'Windows 8.1'
'Windows Server 2016' )

# Leia os valores da matriz com espaço
parahorasno '$ {StringArray [@]}';Faz
jogou fora $ horas
feito

Saída:

$bashfor_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 de string da matriz. O primeiro loop for é usado para exibir valores de array em várias linhas e o segundo loop for é usado para exibir valores de array em uma única linha.

#! / bin / bash

# Declarar um array de string
LanguageArray=('PHP' 'Java' 'C #' 'C ++' 'VB.Net' 'Pitão' 'Perl')

# Imprime os valores da matriz em linhas
jogou fora 'Imprimir cada elemento em uma nova linha'
paraval1no $ {LanguageArray [*]};Faz
jogou fora $ val1
feito

jogou fora ''

# Imprime os valores da matriz em uma linha
jogou fora 'Imprimir todos os elementos em uma única linha'
paraval2no '$ {LanguageArray [*]}';Faz
jogou fora $ val2
feito
jogou fora ''

Saída:

$bashfor_list5.sh

Exemplo-6: iteração de valores de string separados por vírgula

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 variável é usada para definir o separador de campo.

#! / bin / bash
DataList='HTML5, CCS3, BootStrap, JQuery'
Field_Separator=$ IFS

# definir vírgula como separador de campo interno para a lista de strings
IFS=,
parahorasno $ DataList;
Faz
jogou fora $ horas
feito

IFS=$ Field_Separator

Saída:

$bashfor_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 for externo é usado para ler o array combinado e o loop for interno é usado para ler cada array interno.

#! / bin / sh
str_array1=('Magento 2.2.4' 'WooCommerce')
str_array2=('CodeIgnitor' 'Laravel')
combinar=(str_array1 str_array2)
paragerenciouno $ {combine [@]}
Faz
avaliação 'para val em' $ {'$ arrItem'[@]}'; faça echo '$ val'; feito '
feito

Saída:

$bashfor_list7.sh

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

Crie um novo arquivo bash chamado for_list8.sh com o seguinte código. Aqui, ‘/, /’ padrão é usado para dividir os valores da string com base na vírgula.

#! / bin / sh

# Defina uma lista de variáveis ​​de string
stringList= WordPress, Joomla, Magento

# Use vírgula como separador e aplique como padrão
parahorasno $ {stringList //, /}
Faz
jogou fora $ horas
feito

Saída:

$bashfor_list8.sh

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