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