遍历每个都有一对值的数组,依次对每个对进行操作

时间:2018-12-11 22:25:54

标签: bash shell loops

我已经知道如何通过从一组数组的每一个中获取一个变量来生成对,例如:

#!/bin/bash
dir1=(foo baz)  # Not ideal: Want inputs to be dir1=(foo bar); dir2=(baz bat) instead
dir2=(bar bat)
for i in "${!dir1[@]}"
do
  echo "Comparing ${dir1[i]} to ${dir2[i]}"
done

产生以下输出。

  

比较foo和bar   
  比较baz和bat


有没有办法在同一行的foo bar和同一行的baz bat进行此循环?如下。

pair1=(foo bar)
pair2=(baz bat)
...
pairN=(qux quux)
...
do
  # then, inside the loop, compare the pair
done

1 个答案:

答案 0 :(得分:3)

您可以使用cast()遍历以${!prefix@}开头的变量名称,并使用namerefs来引用以每个名称存储的内容:

prefix

请参见https://ideone.com/pTehPZ