Como usar matrizes de índice em Bash

Como usar matrizes de índice em Bash
O Bash fornece suporte para matrizes indexadas, que são essencialmente listas de elementos que podem ser acessados ​​usando seu número de índice. Matrizes indexadas são particularmente úteis quando você deseja armazenar e manipular muitos valores relacionados, leia ainda este artigo para aprender a usar as matrizes de índice.

O que são matrizes de índice

Matrizes indexadas são uma coleção de elementos em festas que podem ser acessados ​​usando um índice ou uma chave. Essas matrizes podem ser usadas para armazenar e recuperar dados em um pedido específico, facilitando o gerenciamento de grandes quantidades de dados. A sintaxe para declarar uma matriz indexada em Bash é a seguinte:

= (Element1 element2 Element3…)

Aqui, Array_name é o nome da matriz e elemento1, elemento2, elemento3 e assim por diante são os valores a serem armazenados na matriz. Os valores são separados pelo espaço em branco e observe que você também pode usar o comando declarar para criar uma matriz.

Como usar matrizes indexadas em Bash

Para criar uma matriz de índice em Bash, você simplesmente precisa declarar uma variável e atribuir valores de TI entre parênteses e separados por espaços. Aqui estão poucos exemplos que demonstram como usar matrizes indexadas no Bash:

  • Reordenando uma lista
  • Filtrando uma lista
  • Contando ocorrências
  • Atualizando uma lista

Reordenando uma lista em Bash

Se você tiver uma lista de itens em uma determinada ordem e deseja reordená -los de uma maneira diferente. Você pode usar uma matriz de índice para criar um novo pedido para os itens, como segue:

#!/BIN/BASH
itens = ("manga" "abacaxi" "morango" "cereja" "uvas")
ordem = (4 2 0 3 1)
para i em "$ order [@]"
fazer
eco $ itens [$ i]
feito

Neste exemplo, criamos uma matriz chamada itens com cinco elementos. Também criamos uma matriz de índice chamada Order, que especifica um novo pedido para os itens. Em seguida, passamos pela matriz de pedidos e usamos cada valor como um índice para recuperar o item correspondente da matriz de itens e imprimi -lo.

Filtrando uma lista em Bash

Se você tiver uma lista de itens e deseja filtrar certos itens com base em uma condição. Você pode usar uma matriz de índice para acompanhar os índices dos itens que atendem à condição, como segue:

#!/BIN/BASH
itens = ("manga" "abacaxi" "morango" "cereja" "uvas")
índices = ()
para i em "$ !Unid[@]"
fazer
se [[$ itens [$ i] == * "r" *]]
então
índices+= ($ i)
fi
feito
para i em "$ índices [@]"
fazer
eco $ itens [$ i]
feito

Neste exemplo, criamos uma matriz chamada itens com cinco elementos. Também criamos uma matriz de índice vazia chamada índices. Em seguida, passamos pela matriz de itens e verificamos se cada item contém a letra "r". Se isso acontecer, adicionamos seu índice à matriz de índices. Por fim, percorremos a matriz dos índices e usamos cada valor como um índice para recuperar o item correspondente da matriz de itens e imprimi -lo.

Contando ocorrências em Bash

Se você tiver uma lista de itens e deseja contar o número de ocorrências de cada item, pode usar uma matriz de índice para acompanhar as contagens e aqui está um exemplo para demonstração:

#!/BIN/BASH
itens = ("manga" "abacaxi" "morango" "cereja" "uvas")
contagens = ()
para i em "$ !Unid[@]"
fazer
se [[ ! "$ couts [@]" = ~ "$ itens [$ i]"]]
então
contagens+= ("$ itens [$ i] 1")
outro
Índice = $ (echo "$ couts [@]" | tr "'\ n' | grep -n"^$ itens [$ i] "| cu)
count = $ (echo "$ contagem [$ index -1]" | corte -d "-f2)
contagens [$ index-1] = "$ itens [$ i] $ ((contagem+1))"
fi
feito
Para contar em "$ contagem [@]"
fazer
eco $ contagem
feito

Primeiro inicializa uma matriz chamada "itens" com uma lista de strings. Então declara uma matriz vazia chamada "contagens". Um loop for criado para iterar para cada item na matriz "itens" e para cada item que verifica se já existe na matriz "contagens".

Se não existir, adicionará o item e a contagem de 1 à matriz "contagens". Se existir, incrementa a contagem desse item na matriz "contagens". Finalmente, para imprimir cada item e sua contagem correspondente, outro para o loop é usado. A saída deste código imprimirá a contagem de cada item na matriz de "itens", com as duplicatas sendo contadas separadamente.

Atualizando uma lista em Bash

Se você tiver uma lista de itens e deseja adicionar ou excluir itens, poderá usar uma matriz de índice para ele e aqui está um exemplo para demonstração:

#!/BIN/BASH
itens = ("manga" "abacaxi" "morango" "cereja" "uvas")
# Adicionando um novo elemento à matriz indexada no índice 2
itens [6] = "laranja"
# Excluindo o elemento no índice 2 da matriz indexada
itens não definidos [2]
# Imprimindo a matriz atualizada
eco "$ itens [@]"

No script, uma matriz indexada “itens” é definida com cinco elementos iniciais. Para adicionar um novo elemento, o valor é simplesmente atribuído ao índice desejado usando a matriz de sintaxe [index] = valor. Neste script, "laranja" é adicionado ao índice 6 da matriz. Para excluir um elemento, usamos o comando unset seguido pelo índice do elemento que queremos remover. Nesse caso, o elemento no índice 2 ("Strawberry") é excluído. A matriz atualizada é então impressa usando a sintaxe “$ Array [@]”, que expande toda a matriz.

Conclusão

As matrizes indexadas são uma estrutura útil de festas que permitem armazenar e manipular vários valores usando uma única variável. Ao entender a sintaxe e o uso de matrizes indexadas, você pode escrever scripts bash mais eficientes e eficazes.