Introdução
Na programação, muitas vezes você precisa armazenar uma lista de itens relacionados, como nomes de arquivos, IDs de usuários ou nomes de servidores. Em vez de criar uma variável separada para cada item, por exemplo, file1, file2 e file3, você pode usar uma única variável chamada Array.
Um array permite armazenar vários valores sob um único nome. Você pode imaginá-lo como uma lista à qual é possível adicionar, remover e da qual é possível ler itens.
Os arrays se tornam úteis assim que uma variável deixa de ser suficiente. Listas de servidores, nomes de arquivos, nomes de pacotes e contas de usuário são exemplos de dados que naturalmente aparecem em grupos, e não como um único valor por vez.
Neste laboratório, você aprenderá a:
- Declarar um array com um conjunto inicial de valores.
- Adicionar novos itens ao array.
- Exibir todos os elementos do array.
- Percorrer (iterar sobre) o array para processar cada item individualmente.
Declarar um Array
Vamos começar criando um script que armazena uma lista de nomes.
Os arrays são a forma de o shell tratar valores relacionados como um grupo, em vez de espalhá-los por várias variáveis separadas. Isso é útil sempre que o script precisa processar uma coleção, e não apenas um item.
Crie o script array_lab.sh:
cd ~/project
nano array_lab.sh
Digite este código para inicializar um array:
#!/bin/bash
## Define an array named 'names'
names=("Alice" "Bob")
Regras de sintaxe:
- Use parênteses
()para envolver a lista de valores. - Use espaços, e não vírgulas, para separar os itens.
("Alice" "Bob")está correto.("Alice", "Bob")está incorreto, porque a vírgula seria tratada como parte da string"Alice,".
Esse último ponto reflete uma regra mais ampla do shell: a sintaxe do Bash muitas vezes parece simples, mas pequenas diferenças de pontuação alteram o significado. Arrays são listas separadas por espaços em branco, e não listas separadas por vírgulas como em algumas outras linguagens.
Salve (Ctrl+O) e saia (Ctrl+X).
Verifique o conteúdo do arquivo:
cat array_lab.sh
Você definiu uma variável de array com sucesso, embora o script ainda não produza nenhuma saída.
Adicionar um Elemento ao Array
Muitas vezes, você não saberá todos os itens da lista ao iniciar. Talvez seja necessário adicionar itens dinamicamente enquanto o script é executado.
Isso é comum em scripts reais. Você pode criar um array com arquivos correspondentes, hosts ativos, serviços com falha ou nomes de pacotes descobertos durante a execução.
Podemos adicionar um novo item ao final de um array usando o operador +=.
Abra o script:
nano array_lab.sh
Adicione a linha a seguir ao final:
## Append 'Charlie' to the list
names+=("Charlie")
Explicação:
+=significa “adicionar ao valor existente”.("Charlie")envolve o novo item em parênteses para garantir que ele seja tratado como um elemento do array.
Agora, o arquivo deve estar assim:
#!/bin/bash
## Define an array named 'names'
names=("Alice" "Bob")
## Append 'Charlie' to the list
names+=("Charlie")
Salve e saia.
Exibir Todos os Elementos
Para verificar se o array contém tudo o que esperamos, podemos exibir todos os seus elementos de uma só vez.
No Bash, acessar uma variável de array é um pouco diferente de acessar uma variável comum. Use ${array_name[@]} para expandir todos os elementos.
@é um símbolo especial que funciona como um curinga para representar “todos os elementos”.
A forma ${...} é outro exemplo de expansão de parâmetros. O Bash não exibe literalmente o nome da variável; ele expande o array para obter os elementos armazenados antes que echo receba o texto final.
Abra array_lab.sh:
nano array_lab.sh
Adicione o comando de exibição:
## Print all elements in the array
echo "All Names: ${names[@]}"
Salve e saia.
Torne o script executável e execute-o:
chmod +x array_lab.sh
./array_lab.sh
Resultado:
All Names: Alice Bob Charlie
A sintaxe ${names[@]} foi expandida para uma lista separada por espaços contendo todos os itens do array.
Percorrer o Array
Exibir a lista inteira é útil para depuração, mas normalmente você deseja processar cada item individualmente. Por exemplo, pode ser necessário criar uma conta de usuário para cada nome da lista.
Para isso, usamos um loop for.
Abra array_lab.sh:
nano array_lab.sh
Adicione o loop ao final:
echo "--- Processing Names ---"
## Loop through each item in the array
for name in "${names[@]}"; do
echo "Hello, $name"
done
Agora, o script completo deve estar assim:
#!/bin/bash
names=("Alice" "Bob")
names+=("Charlie")
echo "All Names: ${names[@]}"
echo "--- Processing Names ---"
for name in "${names[@]}"; do
echo "Hello, $name"
done
Salve e saia. Execute o script:
./array_lab.sh
Resultado:
As aspas em "${names[@]}" também são importantes. Elas preservam cada elemento do array como um item separado, o que é necessário quando os valores contêm espaços. Esse detalhe se torna ainda mais importante em scripts do mundo real, nos quais nomes de arquivos e argumentos nem sempre são strings simples de uma única palavra.
All Names: Alice Bob Charlie
--- Processing Names ---
Hello, Alice
Hello, Bob
Hello, Charlie
O loop pegou cada nome do array, atribuiu-o à variável name e executou o bloco de código. Essa é a forma mais comum de lidar com listas no Bash.
Resumo
Neste laboratório, você aprendeu os fundamentos do uso de arrays no Bash:
- Declaração (
name=(...)): criação de uma lista com valores iniciais. - Adição (
+=): inclusão dinâmica de novos itens em um array existente. - Expansão (
${name[@]}): recuperação de todos os itens do array. - Iteração (
for): processamento de cada item da lista, um por vez.
Os arrays são essenciais para escrever scripts que precisam lidar com vários arquivos, usuários ou pontos de dados de forma eficiente.



