【问题标题】:bash index multiple different arrays at same index for loop [duplicate]bash在循环的同一索引处索引多个不同的数组[重复]
【发布时间】:2021-11-12 14:13:27
【问题描述】:

假设我有三个如下所示的数组:

a=(banana apple grape)
b=(1 2 3)
c=(yellow red purple)

如果我想循环遍历每个变量的每个索引,我该怎么做?例如,我想要如下内容:

for i in range(0,len(a))
do
    echo "$a[i] $b[i] $c[i]"
done

这样的结果将是:

banana 1 yellow
apple 2 red
grape 3 purple

【问题讨论】:

    标签: arrays bash list indexing


    【解决方案1】:

    访问数组元素的语法是${array[index]}

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

    可以使用seq模拟Python的range

    for i in $(seq 1 ${#a[@]}) ; do 
        echo "${a[i-1]} ${b[i-1]} ${c[i-1]}"
    done
    

    其中${#array[@]} 返回数组的大小。

    【讨论】:

    • ...虽然一个人可以使用seq,但我不确定是否有任何令人信服的方面可以证明它比 C 风格更好上面使用的语法。
    • 在 Python 中通过不包括循环中的最后一个元素或在 Perl 中通过 scalar @array$#array 之间的区别来解决您需要 length-1 的事实。在 bash 中,您可以使用 seq 0 $((${#a[@]}-1)),但它变得非常难以阅读 :-)
    猜你喜欢
    • 2015-09-16
    • 2018-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-11
    • 2013-11-26
    • 2019-12-29
    • 1970-01-01
    相关资源
    最近更新 更多