有没有办法我们可以在 Bash 脚本中实现类似的功能?
pureips="10.3.1.111 10.3.1.112 10.3.1.114";
pureservers="a b c";
for ip,server in $pureips,$pureservers; do
echo "$server | $ip ";
done
谢谢。
答案1
如果您希望此嵌套以便每个服务器针对每个 IP 运行(即运行 9 次),您可以:
for ip in $pureips; do
for server in $pureservers; do
echo "$server | $ip "
done
done
如果您只想跟踪每个项目(例如运行 3 次,使用第一个服务器运行第一个 ip,使用第二个服务器运行第二个 ip,等等),您可以使用迭代器并手动调用数组的索引。但这意味着我们还需要先将字符串转换为数组:
read -a pureips <<< "10.3.1.111 10.3.1.112 10.3.1.114"
read -a pureservers <<< "a b c"
for ((i=0; i<=${#pureips[@]}; i++)); do
echo "${pureservers[i]} | ${pureips[i]}"
done
答案2
要使用您尝试的语法(嗯,几乎),您必须将字符串转换为数组:
$ pureips=(10.3.1.111 10.3.1.112 10.3.1.114)
$ pureservers=(a b c)
$ 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