在bash中同时迭代两个数组

前端之家收集整理的这篇文章主要介绍了在bash中同时迭代两个数组前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有两个数组。
array=(
  Vietnam
  Germany
  Argentina
)
array2=(
  Asia
  Europe
  America
)

我想同时循环这两个数组,即在两个数组的第一个元素上调用一个命令,然后在第二个元素上调用相同的命令,依此类推。伪代码

for c in $(array[*]}
do
  echo -e " $c is in ......"
done

我怎么能这样做?

从anishsane的答案和其中的评论,我们现在知道你想要什么。这里是同样的事情在bashier风格,使用一个for循环。看到 Looping Constructs section in the reference manual.我也使用printf而不是echo。
#!/bin/bash

array=( "Vietnam" "Germany" "Argentina" )
array2=( "Asia" "Europe" "America" )

for ((i=0;i<${#array[@]};++i)); do
    printf "%s is in %s\n" "${array[i]}" "${array2[i]}"
done

另一种可能性是使用关联数组:

#!/bin/bash

declare -A continent

continent[Vietnam]=Asia
continent[Germany]=Europe
continent[Argentina]=America

for c in "${!continent[@]}"; do
    printf "%s is in %s\n" "$c" "${continent[$c]}"
done

根据你想做什么,你可能会考虑这第二种可能性。但是请注意,你不会轻易地控制字段在第二种可能性显示的顺序(嗯,它是一个关联数组,所以它不是真的是一个惊喜)。

猜你在找的Bash相关文章