我的目标是将值存储在数组中,如下所示:
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