Arrays no Shell

ShellBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá a trabalhar com arrays na programação shell. Arrays são estruturas de dados que permitem armazenar múltiplos valores sob um único nome, facilitando a organização e a manipulação de informações. Você aprenderá como inicializar arrays, adicionar elementos a eles, acessar itens pelo seu índice e determinar a quantidade total de elementos em um array. Este conhecimento é fundamental para o desenvolvimento de scripts shell mais avançados e tarefas complexas de processamento de dados.

Este é um Laboratório Guiado, que fornece instruções passo a passo para ajudar você a aprender e praticar. Siga as instruções cuidadosamente para concluir cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 97%. Ele recebeu uma taxa de avaliação positiva de 100% dos alunos.

Criar um novo arquivo de script shell

Vamos começar criando um novo arquivo de script shell onde escreveremos nossas operações com arrays.

  1. Abra o seu terminal no WebIDE.

  2. Navegue até o diretório do projeto:

    cd ~/project
  3. Crie um novo arquivo chamado arrays.sh usando o comando touch:

    touch arrays.sh
  4. Abra o arquivo arrays.sh no WebIDE.

Inicializar arrays vazios

Agora que temos nosso arquivo de script, vamos começar inicializando três arrays vazios.

Adicione o seguinte código ao seu arquivo arrays.sh:

#!/bin/bash

## Initialize empty arrays
NUMBERS=()
STRINGS=()
NAMES=()

Vamos detalhar o que este código faz:

  • A primeira linha #!/bin/bash é chamada de shebang. Ela informa ao sistema que este script deve ser executado pelo interpretador Bash.
  • Estamos criando três arrays vazios: NUMBERS, STRINGS e NAMES.
  • A sintaxe () inicializa um array sem elementos.

Adicionar elementos aos arrays

Com os arrays inicializados, vamos adicionar alguns elementos a eles.

Adicione o seguinte código ao seu arquivo arrays.sh, logo abaixo da inicialização dos arrays:

## Add elements to NUMBERS array
NUMBERS+=(1)
NUMBERS+=(2)
NUMBERS+=(3)

## Add elements to STRINGS array
STRINGS+=("hello")
STRINGS+=("world")

## Add elements to NAMES array
NAMES+=("John")
NAMES+=("Eric")
NAMES+=("Jessica")

Entenda o funcionamento deste código:

  • Utilizamos o operador += para anexar (fazer o append de) elementos aos nossos arrays.
  • Para NUMBERS, estamos adicionando os números inteiros 1, 2 e 3.
  • Para STRINGS, estamos adicionando as palavras "hello" e "world".
  • Para NAMES, estamos adicionando três nomes: "John", "Eric" e "Jessica".
  • Observe que colocamos elementos de texto (strings) entre aspas, enquanto números não precisam obrigatoriamente de aspas.

Determinar o número de elementos em um array

Uma operação comum com arrays é descobrir quantos elementos eles contêm. Vamos fazer isso para o nosso array NAMES.

Adicione o seguinte código ao seu arquivo arrays.sh:

## Get the number of elements in the NAMES array
NumberOfNames=${#NAMES[@]}

Esta linha realiza o seguinte:

  • ${#NAMES[@]} nos retorna a quantidade de elementos presentes no array NAMES.
  • Armazenamos esse valor em uma variável chamada NumberOfNames.
  • O símbolo @ dentro dos colchetes refere-se a todos os elementos do array.
  • O símbolo # antes de NAMES instrui o shell a contar os elementos em vez de retornar seus valores.

Acessar um elemento específico em um array

Agora, vamos acessar um elemento específico no nosso array NAMES. Vamos obter o segundo nome da lista.

Adicione este código ao seu arquivo arrays.sh:

## Access the second name in the NAMES array
second_name=${NAMES[1]}

Aqui está a explicação:

  • Estamos acessando o segundo elemento do array NAMES com ${NAMES[1]}.
  • Lembre-se de que os índices de array no Bash começam em 0, portanto [1] refere-se ao segundo elemento.
  • Armazenamos esse valor na variável second_name.

Imprimir os arrays e variáveis

Por fim, vamos adicionar um código para imprimir nossos arrays e variáveis para visualizar os resultados das operações.

Adicione o seguinte código ao final do seu arquivo arrays.sh:

## Print the arrays and variables
echo "NUMBERS array: ${NUMBERS[@]}"
echo "STRINGS array: ${STRINGS[@]}"
echo "The number of names listed in the NAMES array: $NumberOfNames"
echo "The second name on the NAMES list is: $second_name"

Este trecho faz o seguinte:

  • Usamos o comando echo para exibir textos no console.
  • ${NUMBERS[@]} e ${STRINGS[@]} imprimem todos os elementos desses respectivos arrays.
  • Imprimimos as variáveis NumberOfNames e second_name que criamos anteriormente.

Executar o script

Agora que escrevemos nosso script, é hora de executá-lo e conferir os resultados.

  1. No seu terminal, certifique-se de estar no diretório correto:

    cd ~/project
  2. Dê permissão de execução ao script:

    chmod +x arrays.sh
  3. Execute o script:

    ./arrays.sh

Você deverá ver uma saída semelhante a esta:

NUMBERS array: 1 2 3
STRINGS array: hello world
The number of names listed in the NAMES array: 3
The second name on the NAMES list is: Eric

Esta saída confirma que nossas operações foram bem-sucedidas:

  • O array NUMBERS contém 1, 2 e 3.
  • O array STRINGS contém "hello" e "world".
  • Contamos corretamente 3 nomes no array NAMES.
  • Recuperamos com sucesso "Eric" como o segundo nome.

Resumo

Neste laboratório, você aprendeu os fundamentos do trabalho com arrays em scripts shell. Você praticou a inicialização de arrays, a adição de elementos, o acesso a itens específicos e a contagem do número total de elementos. Essas habilidades são cruciais para tarefas de automação mais complexas, especialmente ao lidar com listas de dados ou quando você precisa processar múltiplos itens de forma iterativa. Arrays oferecem uma maneira poderosa de organizar e manipular dados em seus scripts, tornando seu código mais eficiente e fácil de manter.