Bash-如何在数组上迭代(共2步)? 我想知道在bash中以2步或更多步迭代数组的最佳方法是什么?

Bash-如何在数组上迭代(共2步)? 我想知道在bash中以2步或更多步迭代数组的最佳方法是什么?,bash,Bash,例如,以下两种方法都有效,但最干净/最简单的方法是什么? test_.sh 产生如下输出: $ ./test.sh a b c d e Strategy 1 Pair: a,b Pair: c,d Strategy 2 Pair: a,b Pair: c,d 您可以使用迭代使用数组索引: arr=( 1 2 3 4 5 6 7 8 9 ) for ((i=0; i<${#arr[@]}; i+=2)); do echo "${arr[i]}"; done 1 3 5 7 9 a

例如,以下两种方法都有效,但最干净/最简单的方法是什么?

test_.sh 产生如下输出:

$ ./test.sh a b c d e

Strategy 1
Pair: a,b
Pair: c,d

Strategy 2
Pair: a,b
Pair: c,d

您可以使用迭代使用数组索引:

arr=( 1 2 3 4 5 6 7 8 9 )

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

1
3
5
7
9
arr=(123456789)

对于((i=0;i这里有一个简单的Bash方法

#!/bin/bash

data=("Banana" "Apple" "Onion" "Peach")

for ((i=0;i< ${#data[@]} ;i+=2));
do
        echo ${data[i]}
done
!/bin/bash
数据=(“香蕉”“苹果”“洋葱”“桃子”)
对于((i=0;i<${#data[@]};i+=2));
做
echo${data[i]}
完成

问候!

还有一种方法:

data=("Banana" "Apple" "Onion" "Peach")
for i in $(seq 0 2 $((${#data[@]}-1)))
do
    echo ${data[i]}
done
data=("Banana" "Apple" "Onion" "Peach")
for i in $(seq 0 2 $((${#data[@]}-1)))
do
    echo ${data[i]}
done