【问题标题】:Loop over two array values at a time一次循环两个数组值
【发布时间】:2021-03-10 06:03:19
【问题描述】:

如何一次循环两个数组值?我尝试使用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

【问题讨论】:

  • 如果有第二个数组,你可以做echo ${array2[$j]}; j=$((j+1))
  • 顺便说一句,请记住引用您的变量,除非您有充分的理由不这样做。

标签: bash shell


【解决方案1】:

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

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

或者您可以使用语法${variable[@]:offset:length} 提取array slices

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-13
    • 1970-01-01
    • 2015-11-10
    • 1970-01-01
    • 2019-01-25
    • 2021-04-26
    • 1970-01-01
    • 2014-05-14
    相关资源
    最近更新 更多