首页 > 解决方案 > 一次循环两个数组值

问题描述

如何一次循环两个数组值?我尝试使用for循环,但我只能弄清楚如何一次回显一个。

#!/bin/bash

array=(value1 value2 value3 value4 value5 value6 value7 value8 value9 value10)

for i in ${array[@]}
do
        echo $i
done

有没有办法改变 for 循环,它一次回显两个值,如下所示?

value1 value2
value3 value4
value5 value6
value7 value8
value9 value10

标签: bashshell

解决方案


循环索引比循环元素更容易。您可以通过索引拉出这两个元素:

for ((i = 0; i < ${#array[@]}; i += 2)); do
    echo "${array[i+0]} ${array[i+1]}"
done

或者您可以使用以下语法提取数组切片${variable[@]:offset:length}

for ((i = 0; i < ${#array[@]}; i += 2)); do
    echo "${array[@]:i:2}"
done

如果您一次需要两个以上的元素,这将特别有用。


推荐阅读