Y a-t-il un moyen de mettre en œuvre quelque chose comme ça dans un script 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
Merci.
Y a-t-il un moyen de mettre en œuvre quelque chose comme ça dans un script 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
Merci.
Si vous voulez que cela soit imbriqué de sorte que chaque serveur fonctionne contre chaque adresse IP (c'est-à-dire, exécuter 9 fois), vous pouvez :
for ip in $pureips; do
for server in $pureservers; do
echo "$server | $ip "
done
done
Si vous voulez seulement suivre chaque élément (par exemple, exécuter 3 fois, en exécutant le premier IP avec le premier serveur, le deuxième avec le deuxième, etc.), vous pouvez utiliser un itérateur et appeler manuellement l'index du tableau. Mais cela signifie que nous devrons également convertir les chaînes en tableaux d'abord :
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
Pour utiliser la syntaxe (enfin presque) que vous essayiez, vous devriez convertir vos chaines en tableaux :
$ 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
SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.