bash armazenando variáveis de array em rotação

0

Meu objetivo é armazenar valores em array, conforme abaixo:

arr[0]=apple
arr[1]=banana
arr[2]=orange
arr[3]=grapes
arr[4]=apple
arr[5]=banana
arr[6]=orange
arr[7]=grapes
arr[8]=apple
arr[9]=banana

Posso alcançar resultados acima do esperado usando o script abaixo,

Mas quero saber se existe alguma maneira / procedimento otimizado para conseguir isso.

--- Iniciar -----

#!/bin/bash

#####################################
for((a=0;a<=100;a+=4))
    do
       echo ""
       arr[$a]="apple"
done
######################################


#####################################
for((b=1;b<=105;b+=4))
    do
       echo ""
       arr[$b]="banana"
done
######################################


#####################################
for((c=2;c<=106;c+=4))
    do
       echo ""
       arr[$c]="orange"
done
######################################


#####################################
for((d=3;d<=107;d+=4))
    do
       echo ""
       arr[$d]="grapes"
done
######################################




for((i=0;i<=9;i+=1))
    do
       echo ""
       y=${arr[$i]}
echo $y
    done

--- fim -------------

    
por user261334 24.05.2016 / 16:01

1 resposta

1

Uma maneira simples seria definir uma matriz com os quatro valores que você deseja percorrer e usar o operador% (modulo) em seu loop for para determinar quais dos quatro valores serão atribuídos a arr [$ a]

Por exemplo:

#!/bin/bash

values=("apple", "banana", "orange", "grape")

#####################################
for((a=0;a<=100;a++))
  do
    arr[$a]=${values[$a % 4]}
done
######################################

for((i=0;i<=9;i++))
  do
    echo ${arr[$i]}
done
    
por TallChuck 24.05.2016 / 18:28