Neste artigo, explicaremos como você pode declarar e inicializar matrizes associativas no Linux Bash. Vamos elaborar ainda mais o poder das matrizes associativas com a ajuda de vários exemplos.
Executamos os exemplos mencionados neste artigo em um sistema Debian 10 Buster. No entanto, você pode facilmente se replicar em quase todas as distribuições Linux.
Verificando os pré-requisitos
Para usar matrizes associativas no Linux Bash, sua versão GNU Bash deve ser igual ou superior à versão 4. Abra seu terminal Linux acessando -o através da pesquisa de lançador de aplicativos. Em seguida, insira o seguinte comando para verificar sua versão instalada do Bash:
$ Bash -Versão
Minha versão atual da festa é 5.0.3 Então estou pronto para ir. Caso sua versão Bash seja menor que 4, você pode atualizar a Bash executando o seguinte comando como sudo:
$ sudo apt-get install --only upgrade
Declarando uma matriz associativa e inicialize
Declarar uma matriz associativa é bastante simples em Bash e pode ser feita através do comando declarar:
$ declarar -a "nome do array"
Em nosso exemplo, declararemos uma variável de matriz denominada sampleArray1 da seguinte forma:
$ declarar -Um sampleArray1
O próximo passo é inicializar os valores necessários para sua matriz. Em nosso exemplo, queremos ter uma matriz onde os valores são alguns nomes de países e as chaves são as abreviações de nome do país relevante. Aqui, alimentaremos os valores da matriz, um a um da seguinte:
$ Arrayname [key] = valor
Exemplo:
$ sampleArray1 [chn] = China
$ sampleArray1 [jpn] = Japão
$ sampleArray1 [Kor] = Coréia
$ sampleArray1 [twn] = taiwan
$ sampleArray1 [th] = Tailândia
Uma alternativa rápida é declarar e inicializar uma matriz em um único comando bash da seguinte maneira:
$ declara -a arrayname = ([key1] = value1 [key2] = value2 [key3] = value3… . )
Aqui está como podemos declarar e inicializar nossa matriz mencionada, alternativamente, como segue:
$ declara -a sampleArray1 = ([chn] = China [jpn] = Japão [Kor] = Coréia [TWN] = Taiwan
[TH] = Tailândia)
Agora, apresentaremos alguns exemplos que elaborarão o que você pode fazer com matrizes associativas em Bash:
Exemplo1: Acessando as teclas e valores da matriz
Neste exemplo, explicaremos como você pode:
E,
Imprimir
Você pode Imprima um valor contra uma chave Usando a seguinte sintaxe de comando:
$ echo $ ArrayName [KeyName]
Aqui está como podemos acessar o nome completo de um país, fornecendo o nome da abreviação do país, do nosso samplearray1:
$ echo $ sampleArray1 [chn]
$ echo $ sampleArray1 [twn]
Se você estiver interessado em imprimindo todas as chaves De sua matriz associativa, você pode fazer isso usando a seguinte sintaxe:
$ para chave em "$ !ArrayName [@] "; do eco $ key; feito
O comando a seguir imprimirá todos os nomes do país abreviações do meu sampleArray1 por
usando um loop:
$ para chave em "$ !sampleArray1 [@] "; do eco $ key; feito
Outra alternativa para imprimir todas as chaves da matriz é usando a expansão dos parâmetros. O comando a seguir imprimirá todas as teclas na mesma linha:
$ echo "$ !sampleArray1 [@] "
Se você estiver interessado em imprimindo todos os valores da matriz de uma só vez, Você pode fazer isso usando o loop for da seguinte forma:
$ para val em "$ ArrayName [@]"; eco $ val; feito
O comando a seguir imprimirá todos os nomes completos dos países armazenados no meu samplearray1:
$ para val em "$ sampleArray1 [@]"; eco $ val; feito
Outra alternativa para imprimir todos os valores da matriz é usando a expansão dos parâmetros. O comando a seguir imprimirá todos os valores na mesma linha:
$ echo "$ sampleArray1 [@]"
O próximo exemplo útil será Imprima todos os pares de valor-chave imediatamente usando o loop for da seguinte forma:
$ para chave em "$ !sampleArray1 [@] "; do echo" $ key é uma abreviação para
$ sampleArray1 [$ key] "; feito
Você pode, é claro, tornar essa recuperação de informações mais útil em seus scripts de bash complexos e significativos.
Exemplo 2: Counting Array Itens
O comando a seguir pode ser usado para contar e imprimir o número de elementos em sua matriz associativa:
$ echo "$ #ArrayName [@]"
A saída do comando a seguir mostra que tenho cinco itens no meu samplearray1:
$ echo "$ #sampleArray1 [@]"
Exemplo 3: Adicionando novos dados na matriz
Se você deseja adicionar um item a uma matriz depois que você já o declarou e inicializou, esta é a sintaxe que você pode seguir:
$ Arrayname+= ([key] = valor)
No meu exemplo, quero adicionar outro país junto com a abreviação de nome do condado, então usarei o seguinte comando:
$ sampleArray1+= ([al] = Alabama)
Ecoando os valores da matriz agora sugere que o novo país é adicionado à minha matriz:
$ echo "$ sampleArray1 [@]"
Exemplo 4: Excluindo o item da matriz
Ao desmarcar uma entrada da matriz associativa, você pode excluí -la como um item de matriz. Este é o uso da sintaxe Unsett pode usar para fazê -lo:
$ Unset ArrayName [chave]
No meu exemplo, quero remover o par de valores-chave "al-Alabama" da minha matriz, para que desativei a tecla "Al" em meu comando:
$ unset sampleArray1 [al]
Ecoando os valores da matriz agora sugere que o valor-chave al-Alabama agora é removido da minha matriz:
$ echo "$ sampleArray1 [@]"
Exemplo 5: Verificando se existe um item na matriz
Ao usar a condição IF da seguinte maneira, você pode verificar se um item está disponível em sua matriz associativa ou agora:
$ se [$ ArrayName [SearchKey]+_]; então eco "existe"; else eco "não disponível"; fi
Por exemplo, se eu verificar se o item al-Alabama recentemente excluído existe em minha matriz, a seguinte mensagem será impressa:
$ se [$ sampleArray1 [al]+_]; então eco "existe"; else eco "não disponível"; fi
Se eu verificar se existir um item, o seguinte resultado será impresso:
$ se [$ sampleArray1 [jpn]+_]; então eco "existe"; else eco "não disponível"; fi
Exemplo 6: Excluindo uma matriz
Você pode excluir uma matriz associativa da sua memória Bash usando o comando unset da seguinte maneira:
$ Unset ArrayName
Ao usar o seguinte comando simples, excluirei meu samplearray1 da memória:
$ unset sampleArray1
Agora, quando tento imprimir todos os valores da matriz através do seguinte comando, não recebo nenhum.
$ echo "$ sampleArray1 [@]"
Ao usar esses exemplos em seus scripts Linux Bash, você pode usar o poder das matrizes associativas para obter uma solução para muitos problemas complexos.