Array Associativa em Bash

Array Associativa em Bash

Uma variável de matriz é usada para armazenar vários dados com índice e o valor de cada elemento da matriz é acessado pelo valor do índice correspondente desse elemento. A matriz que pode armazenar o valor da string como índice ou chave é chamada de matriz associativa. Uma matriz associativa pode ser declarada e usada em scripts bash, como outras linguagens de programação. Este recurso é adicionado no Bash 4. Como a matriz associativa pode ser declarada e acessada em Bash são explicadas neste tutorial.

Verifique a versão atual do Bash antes de iniciar a próxima parte deste tutorial. Execute o seguinte comando do terminal para verificar a versão instalada do Bash. Se a versão Bash instalada no seu sistema operacional for menor que 4, você terá que instalar a versão 4 Bash primeiro para continuar este tutorial.

$ Bash -Versão

A saída a seguir mostra que a versão atual do Bash é 4.4.19.

Declarando e inicializando a matriz associativa:

Uma matriz associativa pode ser declarada em Bash usando o declarar A palavra -chave e os elementos da matriz podem ser inicializados no momento da declaração de matriz ou após declarar a variável da matriz. O script a seguir criará uma matriz associativa nomeada Assarray1 e os quatro valores de matriz são inicializados individualmente.

$ declarar -a assarray1
$ assarray1 [fruta] = manga
$ assarray1 [pássaro] = cockatail
$ assarray1 [flor] = rosa
$ assarray1 [animal] = tigre

Saída

O script a seguir inicializará a matriz associativa, Assarrat2 no momento da declaração de matriz. Aqui, três valores de matriz com chaves são definidos no momento da declaração de matriz.

$ declara -a assarray2 = ([HDD] = Samsung [Monitor] = Dell [teclado] = A4Tech)

Saída:

Acessando a matriz associativa:

Os elementos da matriz de uma matriz associativa podem ser acessados ​​individualmente ou usando qualquer loop. Essas duas maneiras são mostradas nesta parte do tutorial. As chaves e os valores da matriz podem ser impressos separadamente e juntos.

Os seguintes comandos imprimirão dois valores da matriz, Assarray1 (declarado anteriormente) especificando o valor da chave.

$ echo $ Assarray1 [Bird]
$ echo $ Assarray1 [FLOR]

Saída:

A saída a seguir aparecerá após a execução dos comandos acima.

Às vezes, é necessário imprimir todas as chaves ou todos os valores da matriz. Todas as chaves de uma matriz podem ser impressas usando o loop ou a expansão do parâmetro Bash. O primeiro comando a seguir imprimir todas as teclas da matriz em cada linha usando o loop e o segundo comando imprimirá todas as teclas de matriz em uma linha usando a expansão do parâmetro Bash. Aqui, '!'O símbolo é usado para ler as chaves da matriz associativa.

$ para chave em "$ !assarray1 [@] "; do eco $ key; feito
$ echo "$ !Assarray1 [@] "

Saída:

A saída a seguir aparecerá após a execução dos comandos acima.

Todos os valores de uma matriz podem ser impressos usando o loop ou a expansão do parâmetro Bash. O primeiro comando a seguir imprimirá todos os valores da matriz em cada linha usando o loop e o segundo comando imprimirá todos os valores da matriz em uma linha usando a expansão do parâmetro Bash.

$ para val em "$ Assarray1 [@]"; eco $ val; feito
$ echo "$ Assarray1 [@]"

Saída:

A saída a seguir aparecerá após a execução dos comandos acima.

As chaves e os valores de uma matriz associativa podem ser impressos usando o loop. O script a seguir imprimirá todos os valores com chaves da matriz associativa nomeada Assarray1. Aqui, cada chave da matriz será analisada em cada etapa do loop for e a chave é usada como o índice da matriz para ler o valor da chave correspondente.

$ para chave em "$ !Assarray1 [@] "; do echo" $ key => $ Assarray1 [$ key] ";

Saída:

A saída a seguir aparecerá após a execução do script.

Adicionando novos dados em matriz associativa:

Um novo elemento de matriz pode ser adicionado facilmente na matriz associativa após declarar e inicializar a matriz. Os seguintes comandos verificarão os valores atuais da matriz da matriz, Assarray2, Adicione um novo valor, “Logitech"Com a chave,"Rato”E verifique novamente os elementos atuais da matriz.

$ echo "$ Assarray2 [@]"
$ Assarray2+= ([Mouse] = Logitech)
$ echo "$ Assarray2 [@]"

Saída:

A saída a seguir aparecerá após a execução dos comandos.

Excluindo dados da matriz associativa:

Qualquer valor de elemento da matriz associativa pode ser removido com base no valor da chave. O comando 'Unset' é usado para excluir o valor específico da matriz associativa. Os seguintes comandos são usados, verifique o valor atual da matriz com a chave, “Monitor”, Exclua o valor usando o comando unset e execute novamente o comando 'eco' para verificar se o valor é excluído ou não. $ echo $ Assarray2 [Monitor]

$ unset Assarray2 [monitor]
$ echo $ Assarray2 [Monitor]

Saída:

A saída a seguir aparecerá após a execução dos comandos.

Encontrando o índice ausente da matriz associativa:

O índice ou a chave ausente de uma matriz podem ser encontrados usando uma declaração condicional. O script a seguir verificará a chave da matriz, “Monitor" existe ou não. O valor desta chave é removido no exemplo anterior. Portanto, a condição 'se' retornará falsa e “não encontrada” será impressa.

$ se [$ Assarray2 [Monitor]+_]; então eco "encontrado"; else ecoar "não encontrado"; fi

Saída:

A saída a seguir aparecerá após a execução do script.

Removendo a matriz associativa:

Qualquer matriz associativa pode ser removida usando o comando 'Unset'. O primeiro comando a seguir imprimirá todos os valores da matriz nomeada Assarray1 em uma única linha se a matriz existir. O segundo comando removerá a matriz. O terceiro comando é usado para verificar se a matriz existe ou removida. Se a matriz for removida, nenhuma saída aparecerá.

$ echo "$ Assarray1 [@]"
$ Unset Assarray1
$ echo "$ Assarray1 [@]"

Saída:

A saída a seguir aparecerá após a execução dos comandos.

Conclusão

Quando é necessário para armazenar vários dados do par de valores-chave no Bash, é melhor usar a matriz associativa para armazenar os dados. Como o codificador pode declarar e inicializar a matriz associativa, as chaves de análise ou valores ou ambos, adicionar e excluir elementos da matriz e remover a matriz são mostrados neste tutorial usando vários scripts. Esperança, o leitor poderá usar a matriz associativa no Bash corretamente depois de ler este tutorial.