Incrémenter un nom de variable
Résolu
                                    
                        nicole-rene                    
                                    -
                                     
nicole-rene -
        nicole-rene -
        Bonjour, je cherche a incrémenter le nom d'une variable dans une boucle pour positionner des variables différentes en sortie de boucle .
par exemple.
je lis des valeurs dans un fichier et positionne par un set :j'ai donc n fois les valeurs $1,$2 (ici un nom de disk et son volume),:
 
set 'head -200 $serveur|grep "/dev/" |grep %|awk '{print $1,$2}''
ce qui me donne :"/dev/hda1 75890620 /dev/hda2 75890620......."
ensuite je pensais faire :
N=1
while [ ! -S $1 ] ;do DISK$N=$1 ;Vol$N=$2"; N='expr $N + 1'; shift 2; done
mais je ne sais pas incrémenté le nom de ma variable
pour pouvoir mettre en forme dans un fichier de sortie ainsi:
par echo "$serveur;$DISK1:$Vol1;$DISK2;$Vol2;;;;;;
pour renseigner un fichier csv avec des champs vide ou non le nombre de disque étant limité
<Nom de serveur>;<nom disqu1>;volume disque 1>;<nom disque 2>;volume disque 2>
ce qui pourrai me donner :
Serveur toto;dev/hda1 ;75890620;/dev/hda2 ;75890620;;;;autres donnés;
Serveut tata;dev/hda1 ;75890620;;;;;;autres donnés;
avez vous des idées ?
Merci
                
            
                
    
    
    
        par exemple.
je lis des valeurs dans un fichier et positionne par un set :j'ai donc n fois les valeurs $1,$2 (ici un nom de disk et son volume),:
set 'head -200 $serveur|grep "/dev/" |grep %|awk '{print $1,$2}''
ce qui me donne :"/dev/hda1 75890620 /dev/hda2 75890620......."
ensuite je pensais faire :
N=1
while [ ! -S $1 ] ;do DISK$N=$1 ;Vol$N=$2"; N='expr $N + 1'; shift 2; done
mais je ne sais pas incrémenté le nom de ma variable
pour pouvoir mettre en forme dans un fichier de sortie ainsi:
par echo "$serveur;$DISK1:$Vol1;$DISK2;$Vol2;;;;;;
pour renseigner un fichier csv avec des champs vide ou non le nombre de disque étant limité
<Nom de serveur>;<nom disqu1>;volume disque 1>;<nom disque 2>;volume disque 2>
ce qui pourrai me donner :
Serveur toto;dev/hda1 ;75890620;/dev/hda2 ;75890620;;;;autres donnés;
Serveut tata;dev/hda1 ;75890620;;;;;;autres donnés;
avez vous des idées ?
Merci
        A voir également:         
- Incrémenter un nom de variable
- Trouver un nom avec une adresse ✓ - Forum Loisirs / Divertissements
- Nom de l'adresse ✓ - Forum Loisirs / Divertissements
- Nom sonnerie iphone - Forum iPhone
- Rechercher un nom avec l'adresse ✓ - Forum Réseaux sociaux
- Impossible de créer le fichier de travail. vérifiez la variable d'environnement temp ✓ - Forum Word
2 réponses
                        
                    Essaye comme ça :
;-))
                
                
    
                [tmpfs]$ cat plop SERVEUR_TOTO /dev/hda2 6999 /dev/hda1 10004 /dev/sdb1 183 /dev/sdb3 10119 /dev/sdb4 4138 /dev/sdb5 957 /dev/sdb6 4770 /dev/sdb7 7633 /dev/sdb8 957 /dev/sdb9 957 /dev/sdb10 9539 [tmpfs]$ sed ':z;N;$! bz;s/ \|\n/;/g' plop SERVEUR_TOTO;/dev/hda2;6999;/dev/hda1;10004;/dev/sdb1;183;/dev/sdb3;10119;/dev/sdb4;4138;/dev/sdb5;957;/dev/sdb6;4770;/dev/sdb7;7633;/dev/sdb8;957;/dev/sdb9;957;/dev/sdb10;9539 [tmpfs]$
;-))
    les  fichiers d'origine contienent  200000 lignes a exploiter et la ligne sur laquelje récupére les valeurs  sont des  lignes entiére ressemble plutot a : 
/dev/hda1 75890620 1847448 70188080 3% /
/dev/hda2 75890620 1847448 70188080 3% /
/dev/hda3 75890620 1847448 70188080 3% /
/dev/hda4 75890620 1847448 70188080 3% /
/dev/hda5 75890620 1847448 70188080 3% /
le grep dev et grep % me permettent de selectionner les bonnes lignes je ne peux pas lire mes données autrement ,j'ai d'autre par d"autre données colléectées a mettre ma sortie csv
    /dev/hda1 75890620 1847448 70188080 3% /
/dev/hda2 75890620 1847448 70188080 3% /
/dev/hda3 75890620 1847448 70188080 3% /
/dev/hda4 75890620 1847448 70188080 3% /
/dev/hda5 75890620 1847448 70188080 3% /
le grep dev et grep % me permettent de selectionner les bonnes lignes je ne peux pas lire mes données autrement ,j'ai d'autre par d"autre données colléectées a mettre ma sortie csv
    en fait en me débrouillant autrement finalement je peu aussi écrire 
set ''head -200 $serveur|grep "/dev/" |grep %|awk '{print $1,$2}'
suivit par mon echo "nom de serveur;$1;$3;$5:$2;$3" >>fichier de sortie
en fait je me suis un peu perdue en voulant compter le nombre de disque mais au final il n'y en aura pas plus de 5 et les champs deront laissés a vide .Donc finalement je crois que je me suis compliquée pour rien :-))
Merci pour l'aide et le moment passé je garde le sed de coté car c vrai je ne l'utilise pas souvent ,ça oeut être util pour les mise en forme! bonne soirée
    set ''head -200 $serveur|grep "/dev/" |grep %|awk '{print $1,$2}'
suivit par mon echo "nom de serveur;$1;$3;$5:$2;$3" >>fichier de sortie
en fait je me suis un peu perdue en voulant compter le nombre de disque mais au final il n'y en aura pas plus de 5 et les champs deront laissés a vide .Donc finalement je crois que je me suis compliquée pour rien :-))
Merci pour l'aide et le moment passé je garde le sed de coté car c vrai je ne l'utilise pas souvent ,ça oeut être util pour les mise en forme! bonne soirée
 
    
    
    
    
Par expérience, il vaut mieux travailler sur du concret que sur des explications ;-(
le grep me permet de récupérer les nom de disk et leurs volume.
Une simul consisterais a mettre le résultat d'un df dans un fichier avec de préférence plusieur disk .avec 1 c'est facil ;-)