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