Affectation de champs a des variables au sein d'une boucle FOR [Résolu/Fermé]

Signaler
Messages postés
6
Date d'inscription
lundi 24 août 2015
Statut
Membre
Dernière intervention
27 août 2015
-
Messages postés
6
Date d'inscription
lundi 24 août 2015
Statut
Membre
Dernière intervention
27 août 2015
-
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 :)

2 réponses

Messages postés
35340
Date d'inscription
dimanche 7 novembre 2010
Statut
Non membre
Dernière intervention
6 août 2020
5 321
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

Messages postés
6
Date d'inscription
lundi 24 août 2015
Statut
Membre
Dernière intervention
27 août 2015

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)