我想编写一个循环遍历数组的脚本,循环将考虑每一轮中的当前值和后续值,例如 -
VARIABLES=( 10 20 30 40 50 80 )
for i in ${VARIABLES[@]}; do ## Ideally it should stop at 2nd last value
#Value1=$i
#Value2=$(i+1)
done
如何以正确的方式实现相同的目标?
最佳答案
我有几个变种,首先使用函数和 shift
values=( 10 20 30 40 50 80 )
get_paired_values () {
while [[ $@ ]]; do
value1=$1 value2=$2
echo "$value1 $value2"
shift 2
done
}
get_paired_values "${values[@]}"
第二次使用
while
循环索引,更优雅)i=0
while [[ ${values[$i]} ]]; do
value1=${values[$i]} ; ((i++)); value2=${values[$i]}
echo "$value1 $value2"; ((i++))
done
第二种方法的变体,但使用 slice 和
read
i=0
while [[ ${values[$i]} ]]; do
read value1 value2 <<< ${values[@]:$i:2}
echo "$value1 $value2"; ((i+=2))
done
关于bash - 如何在 Bash 中构建循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60653344/