удар, хранящий переменные типа массив попеременно

Моя цель является значениями хранилища в массиве, как указано ниже:

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

Я могу достигнуть выше ожидаемого вывода с помощью ниже сценария,

Но Хочу знать, там любой оптимизированный путь / процедура для достижения этого.

---Запустите-----

#!/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

---конец-------------

0
задан 24 May 2016 в 17:03

1 ответ

Один простой путь состоял бы в том, чтобы установить массив с четырьмя значениями, которые Вы хотите циклически повторить через и затем использовать % оператор (по модулю) в Вашем, чтобы цикл определил который из четырех значений для присвоения прибытию [$a]

Например:

#!/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
1
ответ дан 23 December 2019 в 17:30

Другие вопросы по тегам:

Похожие вопросы: