在bash中同时迭代两个数组

我有两个数组。


array=(

  Vietnam

  Germany

  Argentina

)

array2=(

  Asia

  Europe

  America

)

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


for c in $(array[*]}

do

  echo -e " $c is in ......"

done

我怎样才能做到这一点?


手掌心
浏览 865回答 3
3回答

凤凰求蛊

从阿尼桑的回答和其中的评论,我们现在知道您想要什么。这是bashier风格的同一件事,使用for循环。请参见参考手册中的 “ 循环构造”部分。我也在使用printf而不是echo。#!/bin/basharray=( "Vietnam" "Germany" "Argentina" )array2=( "Asia" "Europe" "America" )for ((i=0;i<${#array[@]};++i)); do&nbsp; &nbsp; printf "%s is in %s\n" "${array[i]}" "${array2[i]}"done另一种可能性是使用关联数组:#!/bin/bashdeclare -A continentcontinent[Vietnam]=Asiacontinent[Germany]=Europecontinent[Argentina]=Americafor c in "${!continent[@]}"; do&nbsp; &nbsp; printf "%s is in %s\n" "$c" "${continent[$c]}"done根据您想做什么,您不妨考虑第二种可能性。但是请注意,您不会轻易控制字段在第二种可能性中的显示顺序(嗯,这是一个关联数组,所以这并不奇怪)。

森林海

如果所有数组的顺序正确,只需传递索引即可。array=(&nbsp; Vietnam&nbsp; Germany&nbsp; Argentina)array2=(&nbsp; Asia&nbsp; Europe&nbsp; America)for index in ${!array[*]}; do&nbsp;&nbsp; echo "${array[$index]} is in ${array2[$index]}"doneVietnam is in AsiaGermany is in EuropeArgentina is in America
打开App,查看更多内容
随时随地看视频慕课网APP