У меня есть несколько вариантов, во-первых, используя функцию и 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
l oop над индексами, что еще более элегантно)
i=0
while [[ ${values[$i]} ]]; do
value1=${values[$i]} ; ((i++)); value2=${values[$i]}
echo "$value1 $value2"; ((i++))
done
И вариант второго метода, но с использованием среза и read
i=0
while [[ ${values[$i]} ]]; do
read value1 value2 <<< ${values[@]:$i:2}
echo "$value1 $value2"; ((i+=2))
done