Programação com Shell Script
Este artigo destina-se aos que já conhecem o básico de lógica de programação e que estejam interessados em aprender Shell Script.
Parte 4: Arrays
Além de possuir funções e estruturas de controle, shell script também tem arrays. Os arrays seguem a sintaxe abaixo:
Perceba que é possível criar arrays de duas formas diferentes, e que, para retornar o valor de uma posição do array, a sintaxe é diferente de uma variável comum.
Além disso, na última linha é feita a leitura da quantidade de itens (posições ocupadas) do array.
Bom, era isso que eu tinha para mostrar, espero que seja útil para alguém.
#!/bin/bash
# declaracao do array
dias=( "domingo" "segunda" "terca" "quarta" "quinta" "sexta" "sabado" );
echo ${dias[1]}; # imprime segunda
#declaracao do array
nomes[0]="paulo";
nomes[1]="ana";
nomes[2]="carlos";
echo ${nomes[1]};
# para retornar a quantidade de itens
echo ${#nomes[@]} # imprime 3
# declaracao do array
dias=( "domingo" "segunda" "terca" "quarta" "quinta" "sexta" "sabado" );
echo ${dias[1]}; # imprime segunda
#declaracao do array
nomes[0]="paulo";
nomes[1]="ana";
nomes[2]="carlos";
echo ${nomes[1]};
# para retornar a quantidade de itens
echo ${#nomes[@]} # imprime 3
Perceba que é possível criar arrays de duas formas diferentes, e que, para retornar o valor de uma posição do array, a sintaxe é diferente de uma variável comum.
Além disso, na última linha é feita a leitura da quantidade de itens (posições ocupadas) do array.
Exemplo final
Para terminar e exemplificar o artigo, segue um script que organiza uma lista de números (sort):
#!/bin/bash
function organiza() {
array=($@);
i=0;
while [ $i -lt ${#array[@]} ]; do
j=$(($i + 1));
while [ $j -lt ${#array[@]} ]; do
if [ ${array[$j]} -lt ${array[$i]} ]; then
aux=${array[$j]};
array[$j]=${array[$i]};
array[$i]=$aux;
fi
j=$(($j + 1));
done
i=$(($i + 1));
done
for n in ${array[@]}; do
echo "$n";
done
}
function organiza() {
array=($@);
i=0;
while [ $i -lt ${#array[@]} ]; do
j=$(($i + 1));
while [ $j -lt ${#array[@]} ]; do
if [ ${array[$j]} -lt ${array[$i]} ]; then
aux=${array[$j]};
array[$j]=${array[$i]};
array[$i]=$aux;
fi
j=$(($j + 1));
done
i=$(($i + 1));
done
for n in ${array[@]}; do
echo "$n";
done
}
Bom, era isso que eu tinha para mostrar, espero que seja útil para alguém.