加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在bash中同时迭代两个数组

发布时间:2020-12-15 16:14:32 所属栏目:安全 来源:网络整理
导读:我有两个数组。 array=( Vietnam Germany Argentina)array2=( Asia Europe America) 我想同时循环这两个数组,即在两个数组的第一个元素上调用一个命令,然后在第二个元素上调用相同的命令,依此类推。伪代码: for c in $(array[*]}do echo -e " $c is in .
我有两个数组。
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 %sn" "${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 %sn" "$c" "${continent[$c]}"
done

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读