bash 循环存储数组变量

bash 循环存储数组变量

我的目标是将值存储在数组中,如下所示:

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

- -结尾 - - - - - - -

答案1

一种简单的方法是设置一个包含要循环的四个值的数组,然后在 for 循环中使用 % (模数)运算符来确定将四个值中的哪一个分配给 arr[$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

相关内容