Моя цель является значениями хранилища в массиве, как указано ниже:
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
---конец-------------
Один простой путь состоял бы в том, чтобы установить массив с четырьмя значениями, которые Вы хотите циклически повторить через и затем использовать % оператор (по модулю) в Вашем, чтобы цикл определил который из четырех значений для присвоения прибытию [$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