Como manipular e controlar dados com Bash Array

Como Manipular E Controlar Dados Com Bash Array



Uma variável de array é usada em qualquer linguagem de programação para armazenar vários valores usando um índice. O índice da matriz pode ser um número ou string. A matriz que contém o índice numérico é chamada de “matriz numérica” e a matriz que contém o valor da string como índice é chamada de “matriz associativa”. Matrizes numéricas e associativas podem ser criadas no Bash. Os métodos de manipulação e controle dos dados do array Bash são mostrados em detalhes usando 15 exemplos neste tutorial.

Lista de conteúdo:

  1. Definir um array por índice
  2. Defina uma matriz com vários valores
  3. Definir uma matriz associativa
  4. Conte os valores da matriz
  5. Leia os valores da matriz por loop
  6. Leia os valores particulares da matriz
  7. Insira os valores da matriz
  8. Ler o conteúdo de um arquivo no array
  9. Combine os valores da matriz
  10. Modifique os valores da matriz
  11. Remova os valores da matriz
  12. Pesquise e substitua os valores da matriz
  13. Use um array como argumento de função
  14. Retornar o array da função
  15. Deixe o array vazio

Definir um array por índice

O método de declarar um array mencionando os índices numéricos sequenciais ou não sequenciais é mostrado no script a seguir. Este tipo de array é chamado de array numérico. Aqui, o array “$books” é criado definindo três índices sequenciais e o array “$products” é criado definindo quatro índices não sequenciais. Todos os valores de ambos os arrays são impressos usando a função “printf”.







#!/bin/bash

#Define o índice do array em ordem sequencial

livros [ 0 ] = 'Aprendendo o bash Shell'

livros [ 1 ] = ‘Operações de segurança cibernética com bash’

livros [ 2 ] = 'Dicas profissionais da linha de comando Bash'

eco 'Todos os valores do primeiro array:'

imprimir '%s\n' ' ${livros[@]} '

#Define o índice do array em ordem não sequencial

produtos [ 10 ] = 'Caneta'

produtos [ 5 ] = 'Lápis'

produtos [ 9 ] = 'Regras'

produtos [ 4 ] = 'Papel tamanho A4'

eco

eco 'Todos os valores da segunda matriz:'

imprimir '%s\n' ' ${produtos[@]} '

Saída :



A seguinte saída aparece após a execução do script. Os valores de ambas as matrizes são impressos na saída. A ordem dos índices é mantida no momento da impressão para a matriz de índices não sequenciais:



  p1





Ir para o topo

Defina uma matriz com vários valores

Uma matriz numérica com vários valores pode ser declarada usando o comando “declare” com a opção -a ou sem usar o comando “declare”. No script a seguir, o primeiro array é declarado usando o comando “declare” e o segundo array é criado sem usar o comando “declare”.



#!/bin/bash

#Declare um array numérico com a palavra-chave 'declare'

declarar -a nomes = ( 'Michael' 'Davi' 'Alexandre' 'Tomás' 'Roberto' 'Ricardo' )

#Imprime os valores do array

eco 'Todos os valores do primeiro array:'

imprimir '%s\n' ' ${nomes[@]} '

#Declare um array numérico sem a palavra-chave 'declare'

livros = ( 'Tutoriais de script de shell' 'Bish Bash Bosh!' 'Aprenda Bash rapidamente' )

#Adicionar nova linha

eco

#Imprime os valores do array

eco 'Todos os valores da segunda matriz:'

imprimir '%s\n' ' ${livros[@]} '

Saída :

A seguinte saída aparece após a execução do script. Os valores de ambas as matrizes são impressos aqui:

  p2

Ir para o topo

Definir uma matriz associativa

A matriz que contém o valor da string como índice é chamada de matriz associativa. A opção -A é usada com o comando “declare” no Bash para criar um array Bash associativo. No script a seguir, o primeiro array associativo é declarado mencionando os índices separadamente e o segundo array é declarado mencionando todos os pares chave-valor no momento da declaração do array.

#!/bin/bash

#Declara uma variável de array associativa sem valor

declarar -A funcionário

#Atribuir valor separadamente definindo o índice

funcionário [ 'eu ia' ] = '78564'

funcionário [ 'nome' ] = ‘Ator Disponível’

funcionário [ 'publicar' ] = 'CEO'

funcionário [ 'salário' ] = 300.000

#Imprime dois valores do array

eco 'ID do Empregado: ${funcionário[id]} '

eco 'Nome do empregado: ${funcionário[nome]} '

#Declare um array associativo com valores

declarar -A curso = ( [ código ] = 'CSE-206' [ nome ] = 'Programação Orientada a Objetos' [ Hora extra ] = 2,0 )

#Adicionar nova linha

eco

#Imprime dois valores de array do segundo array

eco 'Nome do curso: ${curso[nome]} '

eco 'Hora extra: ${curso[crédito_hora]} '

Saída :

A seguinte saída aparece após a execução do script. Os valores específicos da matriz associativa são impressos aqui mencionando a chave ou o valor do índice:

  pág.3

Ir para o topo

Conte os valores da matriz

O método de contagem do total de elementos da matriz numérica e da matriz associativa é mostrado no seguinte script:

#!/bin/bash

#Declara um array numérico

declarar -a nomes = ( 'Michael' 'Davi' 'Alexandre' 'Tomás' 'Roberto' 'Ricardo' ) ;

eco 'O comprimento da matriz numérica é ${#nomes[@]} '

#Declara um array associativo

declarar -A curso = ( [ código ] = 'CSE-206' [ nome ] = 'Programação Orientada a Objetos' [ Hora extra ] = 2,0 )

eco 'O comprimento da matriz associativa é ${#curso[@]} '

Saída :

A seguinte saída aparece após a execução do script. O comprimento da matriz numérica e associativa é impresso aqui:

  pág.4

Ir para o topo

Leia os valores da matriz por loop

O método de leitura de todos os valores de um array numérico e um array associativo usando o loop “for” é mostrado no seguinte script:

#!/bin/bash

#Declara um array numérico

declarar -a livros = ( 'Tutoriais de script Shell' 'Bish Bash Bosh!' 'Aprenda Bash rapidamente' )

#Imprime os valores do array numérico

eco 'Os valores da matriz numérica são:'

para em em ' ${livros[@]} '

fazer

eco ' $ em '

feito

eco

#Declare um array associativo com valores

declarar -A clientes = (

[ eu ia ] = 'H-5623'

[ nome ] = 'Senhor. Ahnaf'

[ endereço ] = '6/A, Dhanmondi, Dhaka.'

[ telefone ] = '+8801975642312' )

#Imprime os valores do array associativo

eco 'Os valores da matriz associativa são:'

para k em ' ${!clientes[@]} '

fazer

eco ' $ k => ${clientes[$k]} '

feito

Saída :

A seguinte saída aparece após a execução do script. Aqui, os valores da matriz numérica e os pares de valores-chave da matriz associativa são impressos na saída:

  p5

Ir para o topo

Leia a faixa específica de valores da matriz

Os valores da matriz de um intervalo específico de índices são mostrados no script a seguir. No script, uma matriz numérica de quatro elementos é definida. Dois valores de array do segundo índice do array são impressos posteriormente.

#!/bin/bash

#Declara um array numérico

declarar -a bolos = ( 'Bolo de chocolate' 'Bolo de baunilha' 'Bolo de veludo vermelho' 'bolo de morango' )

#Imprime os valores específicos do array

eco 'O segundo e o terceiro elementos dos valores da matriz são:'

imprimir '%s\n' ' ${bolos[@]:1:2} '

Saída :

A seguinte saída aparece após a execução do script. O segundo e terceiro valores do array são “Vanilla Cake” e “Red Velvet Cake” que são impressos na saída:

  pág.6

Ir para o topo

Insira os valores da matriz

O método de adicionar vários valores no final da matriz é mostrado no script a seguir. O array principal que é “$books” contém três elementos e dois elementos são adicionados no final do array “$books”.

#!/bin/bash

#Declara um array numérico

declarar -a livros = ( 'Tutoriais de script Shell' 'Bish Bash Bosh!' 'Aprenda Bash rapidamente' )

#Imprime os valores do array antes de inserir

eco 'Valores da matriz:'

imprimir '%s\n' ' ${livros[@]} '

eco

livros = ( ' ${livros[@]} ' 'Bíblia de Linha de Comando Linux e Shell Scripting' 'Guia avançado de script Bash por Mendel Cooper' )

#Imprime os valores do array após inserir

eco 'Valores da matriz após inserir dois valores:'

imprimir '%s\n' ' ${livros[@]} '

Saída :

A seguinte saída aparece após a execução do script. Os valores do array antes e depois da inserção de novos valores são impressos na saída:

  pág.7

Ir para o topo

Leia o conteúdo do arquivo na matriz

Crie um arquivo de texto chamado “fruits.txt” com o seguinte conteúdo para testar o script deste exemplo:

frutas.txt

manga

Jaca

Abacaxi

Laranja

Banana

No script a seguir, o conteúdo de um arquivo é armazenado em um array chamado “$data”. Aqui, cada linha do arquivo é armazenada como cada elemento do array. A seguir, os valores do array são impressos.

#!/bin/bash

#Leia o nome do arquivo do usuário

ler -p 'Digite o nome do arquivo:' nome do arquivo

se [ -f $nome do arquivo ]

então

#Leia o conteúdo do arquivo em um array'

dados = ( ` gato ' $nome do arquivo ' ` )

eco 'O conteúdo do arquivo é fornecido abaixo:'

#Leia o arquivo linha por linha

para linha em ' ${dados[@]} '

fazer

eco $ linha

feito

ser

Saída :

A seguinte saída aparece após a execução do script. A saída mostrada pelo comando “cat” e a saída do script são semelhantes porque o mesmo arquivo é acessado pelo comando “cat” e pelo script:

  pág.8

Ir para o topo

Combine os valores da matriz

Um novo array é criado combinando os valores de vários arrays. No script a seguir, duas matrizes numéricas de strings são definidas. Então, um novo array é criado combinando os valores desses arrays.

#!/bin/bash

#Declara o primeiro array

declarar -a nomeLista1 = ( 'Michael' 'Davi' 'Alexandre' 'Tomás' )

eco 'Os primeiros valores da matriz são:'

imprimir '%s,' ${nomeLista1[@]}

eco

#Declara o segundo array

declarar -a nomeLista2 = ( 'Roberto' 'Ricardo' )

eco 'Os valores da segunda matriz são:'

imprimir '%s,' ${nomeLista2[@]}

eco

#Crie um novo array combinando dois arrays

matriz_combinada = ( ' ${nomeLista1[@]} ' ' ${nomeLista2[@]} ' )

eco 'Os valores da matriz combinada são:'

imprimir '%s,' ${matriz_combinada[@]}

eco

Saída :

A seguinte saída aparece após a execução do script. Aqui, os valores de três arrays são impressos na saída. A terceira matriz contém todos os valores da primeira e da segunda matriz:

  p9

Ir para o topo

Modifique os valores da matriz

O método de atualização de um ou mais valores do array mencionando o índice é mostrado no seguinte script:

#!/bin/bash

#Declara o primeiro array

declarar -a lista de nomes = ( 'Michael' 'Davi' 'Alexandre' 'Tomás' )

eco 'Valores da matriz:'

imprimir '%s,' ${nomeLista[@]}

eco

#Atualiza o segundo valor do array

lista de nomes [ 1 ] = 'Roberto'

eco 'Valores da matriz após atualização:'

imprimir '%s,' ${nomeLista[@]}

eco

Saída :

A seguinte saída aparece após a execução do script. Os valores do array principal e dos arrays atualizados são impressos na saída:

  p10

Remova os valores da matriz

O comando “unset” é usado para remover um elemento específico ou todos os elementos do array. No script a seguir, o segundo elemento da matriz é removido.

#!/bin/bash

#Declara um array numérico

declarar -a livros = ( 'Tutoriais de script Shell' 'Bish Bash Bosh!' 'Aprenda Bash rapidamente' )

#Imprime os valores do array antes de remover

eco 'Valores da matriz:'

imprimir '%s\n' ' ${livros[@]} '

eco

#Remova o segundo elemento

desarmar livros [ 1 ]

#Imprime os valores do array após remover

eco 'Valores da matriz após remover o segundo valor:'

imprimir '%s\n' ' ${livros[@]} '

Saída :

A seguinte saída aparece após a execução do script. Os valores do array principal e os valores do array após a remoção de um valor são impressos na saída:

  pág.11

Ir para o topo

Pesquise e substitua os valores da matriz

No script a seguir, o valor específico do array é substituído por outro valor se o valor de pesquisa definido no padrão corresponder a qualquer valor do array “$names”.

#!/bin/bash

#Declara o primeiro array

declarar -a nomes = ( 'Michael' 'Davi' 'Alexandre' 'Tomás' )

#Imprime os valores originais do array

eco 'Valores da matriz original:'

imprimir '%s\n' ' ${nomes[@]} '

#Gerar string após substituir os valores do array

array_atualizado = ${nomes[@]/Alexander/Richard}

#Imprime os valores do array após substituir

eco 'Valores da matriz após substituição:'

imprimir '%s\n' ' ${matriz_atualizada[@]} '

Saída :

A seguinte saída aparece após a execução do script. Os valores do array principal e os valores do array após a substituição de um valor são impressos na saída:

  pág. 12

Ir para o topo

Use um array como argumento de função

No script a seguir, uma variável de array é passada como argumento da função e os valores desse array são impressos posteriormente.

#!/bin/bash

#Declara um array de números

declarar -a números = ( 10 6 Quatro cinco 13 8 )

#Define uma função que receberá um valor de argumento

função ( )

{

#Leia o primeiro argumento

números = US$ 1

#Imprime os valores do array

eco 'Valores da matriz:'

imprimir '%d\n' ' ${números[@]} '

}

#Chama a função com o array como argumento

função ' ${números[@]} '

Saída :

A seguinte saída aparece após a execução do script:

  pág.13

Ir para o topo

Retornar um array da função

No script a seguir, a função é chamada com quatro argumentos numéricos. Um array é criado com os valores dos argumentos e esse array é retornado da função para o chamador.

#!/bin/bash

#Defina uma função que leia quatro valores de argumentos

função ( )

{

#Leia os valores dos argumentos

números = ( US$ 1 US$ 2 US$ 3 US$ 4 )

#Retorna a matriz

eco ' ${números[@]} '

}

#Chame a função com três argumentos

valor_retorno =$ ( função 78 Quatro cinco 90 23 )

#Armazena o valor de retorno em um array

ler -a num <<< $return_val

#Imprime os valores do array retornado

eco 'Os valores da matriz são:'

para em em ' ${num[@]} '

fazer

eco ' $ em '

feito

Saída :

A seguinte saída aparece após a execução do script:

Ir para o topo

Deixe o array vazio

O script a seguir mostra o método de esvaziar um array usando o comando “unset”. O número total de valores do array é impresso antes e depois de esvaziar o array.

#!/bin/bash

#Declara um array de números

declarar -a números = ( 10 6 Quatro cinco 13 80 )

eco 'Números de valores da matriz: ${#números[@]} '

#Deixa o array vazio

desarmar números

eco 'Número de valores do array após esvaziar o array: ${#números[@]} '

Saída :

A seguinte saída aparece após a execução do script. O número de elementos do array tornou-se 0 após esvaziar o array:

  pág. 15

Ir para o topo

Conclusão

Diferentes métodos de declaração, acesso, modificação e remoção de variáveis ​​de array no script Bash são mostrados neste tutorial usando 15 exemplos simples. Esperamos que este tutorial ajude os usuários do Bash a conhecer detalhadamente os usos do array Bash.