Unix / Linux - Usando matrizes Shell

Neste capítulo, discutiremos como usar matrizes de shell no Unix. Uma variável de shell é capaz o suficiente para conter um único valor. Essas variáveis ​​são chamadas de variáveis ​​escalares.

Shell suporta um tipo diferente de variável chamado de array variable. Isso pode conter vários valores ao mesmo tempo. Os arrays fornecem um método de agrupamento de um conjunto de variáveis. Em vez de criar um novo nome para cada variável necessária, você pode usar uma única variável de matriz que armazena todas as outras variáveis.

Todas as regras de nomenclatura discutidas para Variáveis ​​Shell seriam aplicáveis ​​ao nomear arrays.

Definindo Valores de Matriz

A diferença entre uma variável de array e uma variável escalar pode ser explicada como segue.

Suponha que você esteja tentando representar os nomes de vários alunos como um conjunto de variáveis. Cada uma das variáveis ​​individuais é uma variável escalar da seguinte forma -

NAME01="Zara"
NAME02="Qadir"
NAME03="Mahnaz"
NAME04="Ayan"
NAME05="Daisy"

Podemos usar um único array para armazenar todos os nomes mencionados acima. A seguir está o método mais simples de criar uma variável de matriz. Isso ajuda a atribuir um valor a um de seus índices.

array_name[index]=value

Aqui array_name é o nome da matriz, índice é o índice do item na matriz que você deseja definir e valor é o valor que deseja definir para esse item.

Como exemplo, os seguintes comandos -

NAME[0]="Zara"
NAME[1]="Qadir"
NAME[2]="Mahnaz"
NAME[3]="Ayan"
NAME[4]="Daisy"

Se você estiver usando o ksh shell, aqui está a sintaxe de inicialização do array -

set -A array_name value1 value2 ... valuen

Se você estiver usando o bash shell, aqui está a sintaxe de inicialização do array -

array_name=(value1 ... valuen)

Acessando Valores de Matriz

Depois de definir qualquer variável de matriz, você a acessa da seguinte maneira -

${array_name[index]}

Aqui array_name é o nome do array e index é o índice do valor a ser acessado. A seguir está um exemplo para entender o conceito -

#!/bin/sh

NAME[0]="Zara"
NAME[1]="Qadir"
NAME[2]="Mahnaz"
NAME[3]="Ayan"
NAME[4]="Daisy"
echo "First Index: ${NAME[0]}"
echo "Second Index: ${NAME[1]}"

O exemplo acima irá gerar o seguinte resultado -

$./test.sh
First Index: Zara
Second Index: Qadir

Você pode acessar todos os itens em uma matriz de uma das seguintes maneiras -

${array_name[*]}
${array_name[@]}

Aqui array_name é o nome da matriz em que você está interessado. O exemplo a seguir o ajudará a entender o conceito -

#!/bin/sh

NAME[0]="Zara"
NAME[1]="Qadir"
NAME[2]="Mahnaz"
NAME[3]="Ayan"
NAME[4]="Daisy"
echo "First Method: ${NAME[*]}"
echo "Second Method: ${NAME[@]}"

O exemplo acima irá gerar o seguinte resultado -

$./test.sh
First Method: Zara Qadir Mahnaz Ayan Daisy
Second Method: Zara Qadir Mahnaz Ayan Daisy