For循环语法bash脚本

有没有办法在bash脚本中实现这样的东西?

pureips="10.3.1.111 10.3.1.112 10.3.1.114"; pureservers="abc"; for ip,server in $pureips,$pureservers; do echo "$server | $ip "; done 

谢谢。

如果你想要这个嵌套,那么每个服务器都针对每个IP运行(即运行9次),你可以:

 for ip in $pureips; do for server in $pureservers; do echo "$server | $ip " done done 

如果您只想跟踪每个项目(例如,运行3次,使用第一个服务器运行第一个ip,第二个运行第二个,等等),您可以使用迭代器并手动调用数组的索引。 但这确实意味着我们还需要先将字符串转换为数组:

 read -a pureips <<< "10.3.1.111 10.3.1.112 10.3.1.114" read -a pureservers <<< "abc" for ((i=0; i<=${#pureips[@]}; i++)); do echo "${pureservers[i]} | ${pureips[i]}" done 

要使用您尝试的语法(好吧,差不多),您必须将字符串转换为数组:

 $ pureips=(10.3.1.111 10.3.1.112 10.3.1.114) $ pureservers=(abc) $ for server in ${pureservers[@]}; do for ip in ${pureips[@]}; do echo "$server | $ip "; done done a | 10.3.1.111 a | 10.3.1.112 a | 10.3.1.114 b | 10.3.1.111 b | 10.3.1.112 b | 10.3.1.114 c | 10.3.1.111 c | 10.3.1.112 c | 10.3.1.114