如何在Bash中构造循环
我想编写一个脚本,循环通过一个数组,循环将在每个回合中考虑当前值和以下值,例如-如何在Bash中构造循环,bash,ubuntu,Bash,Ubuntu,我想编写一个脚本,循环通过一个数组,循环将在每个回合中考虑当前值和以下值,例如- 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 如何以正确的方式实现相同的操作?您需要循环遍历索引,而不是数组元素,因此可以对索引进行算术运算 fo
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
如何以正确的方式实现相同的操作?您需要循环遍历索引,而不是数组元素,因此可以对索引进行算术运算
for ((i=0; i < ${#VARIABLES[@]}-1; i++))
do
value1=${VARIABLES[i]}
value2=${VARIABLES[i+1]}
...
done
((i=0;i<${#变量[@]}-1;i++)的
做
value1=${VARIABLES[i]}
value2=${VARIABLES[i+1]}
...
完成
我有一些变体,首先是使用函数和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[@]}"
第二种方法是使用而循环索引,这更为优雅)
和第二种方法的变体,但使用slice和read
i=0
while [[ ${values[$i]} ]]; do
read value1 value2 <<< ${values[@]:$i:2}
echo "$value1 $value2"; ((i+=2))
done
i=0
而[[${values[$i]}]];做
读取值1值2
i=0
while [[ ${values[$i]} ]]; do
read value1 value2 <<< ${values[@]:$i:2}
echo "$value1 $value2"; ((i+=2))
done