Для цикла синтаксис колотят сценарий

Существует ли способ, которым мы можем реализовать некоторую вещь как это в сценарии удара?

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

Спасибо.

3
задан 25 October 2014 в 15:49

2 ответа

Если Вы хотите это к вложенному множеству так каждый сервер выполнения против каждого 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 <<< "a b c"

for ((i=0; i<=${#pureips[@]}; i++)); do
    echo "${pureservers[i]} | ${pureips[i]}"
done
5
ответ дан 17 November 2019 в 19:58

Для использования синтаксиса (хорошо почти), Вы пытались, необходимо будет преобразовать строки в массивы:

$ 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 
0
ответ дан 17 November 2019 в 19:58

Другие вопросы по тегам:

Похожие вопросы: