Affectation de champs a des variables au sein d'une boucle FOR

Résolu/Fermé
nerdzlol Messages postés 6 Date d'inscription lundi 24 août 2015 Statut Membre Dernière intervention 27 août 2015 - 24 août 2015 à 18:55
nerdzlol Messages postés 6 Date d'inscription lundi 24 août 2015 Statut Membre Dernière intervention 27 août 2015 - 25 août 2015 à 11:33
Bonjour,

j'ai une liste dans un fiche de type:

machine1;sous-machine1;sous-switch1;numero1
machine2;sous-machine2;sous-switch2;numero2
machine3;sous-machine3;sous-switch3;numero3
machine4;sous-machine4;sous-switch4;numero4

Dans un script sh qui viens interroger ce fichier je mets en variable le 1er champs et une boucle for passe les instructions sur uniquement la 1ere variable (machine1)

maintenant j'ai besoin au sein de cet boucle for de mettre dans 3 autres variables le reste de la ligne en prennant le séparateur ; en compte

Seulement la boucle for mets en variable directement la colonne correspondante au lieu de prendre juste un argument de derouler tout le script avant de passer a la ligne suivante...

Merci de votre aide :)
A voir également:

2 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 417
24 août 2015 à 19:08
Salut,

$ cat plop 
machine1;sous-machine1;sous-switch1;numero1
machine2;sous-machine2;sous-switch2;numero2
machine3;sous-machine3;sous-switch3;numero3
machine4;sous-machine4;sous-switch4;numero4

$ while IFS=";" read a b c d
do
echo -e "a = ${a}\nb = ${b}\nc = ${c}\nd = ${d}\n\n"
done <plop

a = machine1
b = sous-machine1
c = sous-switch1
d = numero1


a = machine2
b = sous-machine2
c = sous-switch2
d = numero2


a = machine3
b = sous-machine3
c = sous-switch3
d = numero3


a = machine4
b = sous-machine4
c = sous-switch4
d = numero4

0
nerdzlol Messages postés 6 Date d'inscription lundi 24 août 2015 Statut Membre Dernière intervention 27 août 2015
25 août 2015 à 11:33
merci ;)

j'avais trouvé aussi une solution a base de cut:

export machine1=$(echo ${ligne} |cut -d";" -f1)
export sous-machine1=$(echo ${ligne} |cut -d";" -f2)
export sous-switch1=$(echo ${ligne} |cut -d";" -f3)
export numero1=$(echo ${ligne} |cut -d";" -f4)
0