Conheça os arrays Bash – como declará-los, manipulá-los e excluí-los.
Matrizes são armazenamentos de dados usados para armazenar valores que têm alguma relação entre si. Ao contrário da maioria das linguagens de programação, os arrays Bash podem armazenar valores de diferentes tipos de dados no mesmo array.
Bash possui dois tipos de arrays: arrays indexados e arrays associativos. Para matrizes indexadas, os índices começam de 0 a (n-1), como é comum na maioria das linguagens. No entanto, os arrays no Bash são esparsos. Isso significa que você pode atribuir o (n-1)-ésimo elemento da matriz sem ter atribuído o (n-2)-ésimo elemento.
Neste tutorial, você aprenderá como trabalhar com arrays no Bash. Vamos começar.
Definindo matrizes
Existem três maneiras de definir arrays no Bash. Semelhante às variáveis Bash, os arrays precisam ser inicializados na criação. A única exceção a isso é se você estiver usando o declarar palavra-chave. Você também precisa ter certeza de que não há espaço em nenhum dos lados do operador de atribuição enquanto inicializa o array.
O primeiro método é a atribuição composta de valores ao nome do array. Existem duas maneiras de fazer isso:
arr1 = (3 5 6 7)
# or this
arr2 = ([3]=5 [1]=8 [0]=7)
Na primeira atribuição composta, os valores entre colchetes são atribuídos sequencialmente a partir do índice [0] para [3].
Porém, no segundo, os valores são atribuídos a um índice na ordem indicada pelo programador.
Relacionado: O que são variáveis de ambiente no Linux? Tudo o que você precisa saber
Se você prestou atenção arr2, você notará esse índice [2] ficou de fora. A matriz ainda será criada sem erros. Esta tarefa é na verdade uma demonstração de armazenamento esparso em arrays Bash, conforme mencionamos anteriormente.
Observe que não há vírgulas separando os valores do array. Os valores são simplesmente separados por espaços.
O segundo método declara indiretamente o array. Você pode simplesmente começar a atribuir valores aos elementos nulos do array:
arr3[0]=Toyota
arr3[1]=Honda
arr3[2]=Mercedes
A terceira maneira é declarar explicitamente o array com a palavra-chave declarar:
declare -a arrayName
Operações em matrizes
Para acessar os elementos do array, use esta sintaxe: ${matriz[índice]}
fruits=(mango banana apples)
echo${fruits[1]}# output is banana
Se você precisar imprimir o array inteiro, use o @ símbolo como o
índice de ${matriz[índice]}:
echo${fruits[@]}
Para descobrir o número de elementos na matriz, use o # símbolo conforme mostrado abaixo:
echo ${#fruits[1]}
Você também pode precisar modificar os elementos do array – veja o exemplo abaixo sobre como fazer isso. É semelhante a como você adiciona um novo elemento. A única diferença é que você está substituindo um valor por um índice que já possui um valor.
fruits[1]=pears
Matrizes Associativas
Uma matriz que possui valores arbitrários como chaves é chamada de matriz associativa. Essas matrizes são usadas para armazenar pares de valores-chave relacionados.
Relacionado: Como transformar scripts Bash em aplicativos clicáveis usando AppleScript
Para definir uma matriz associativa, você precisa fazê-lo explicitamente usando a palavra-chave declarar.
# associative array called animal
declare -A animal
animal[giraffe]=tall
animal[lion]=brave
animal[cheetah]=fast
Você pode acessar um elemento membro da mesma forma que faz com arrays indexados:
echo${animal[lion]}
Se desejar imprimir todos os valores, você pode usar o @ símbolo conforme mostrado abaixo:
echo${animal[@]}
Se você quiser imprimir todas as chaves do array, você pode usar o @ e ! símbolos conforme demonstrado abaixo:
echo${!animal[@]}
Para encontrar o número de elementos que o array associativo possui, use a mesma sintaxe que você usaria com arrays indexados (demonstrado na última seção).
Se você deseja excluir um item do array ou todo o array, use a sintaxe abaixo:
unset arrayName[Key] # delete array item
unset arrayName # delete entire array
Usando o comando printf
Você deve ter notado que todo este artigo usa o eco comando para enviar dados para o shell. O eco O comando funciona para este tutorial, mas tem poucos recursos e flexibilidade quando se trata de formatação de strings.
No entanto, o imprimir O comando oferece opções de formatação mais específicas que facilitam a criação de scripts Bash. Aprendendo o imprimir certamente aumentará sua experiência e eficiência de formatação de strings no Bash.