oui ca marche aussi ca...
Code : Sélectionner tout - Visualiser dans une fenêtre à part FICHIER="`cat /home/afourquemin/file.cvs`"
oui ca marche aussi ca...
Code : Sélectionner tout - Visualiser dans une fenêtre à part FICHIER="`cat /home/afourquemin/file.cvs`"
marche pas !! sérieux ca me soule !!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 while read enreg; do echo $enreg USER=$(echo "$enreg" | cut -d';' -f1) NOM=$(echo "$enreg" | cut -d';' -f2) PASSWORD=$(echo "$enreg" | cut -d';' -f3) echo "$USER - $NOM - $PASSWORD" done < /home/root/scripts/file.csv
je ne sais pas se qu'il se passe ! j'ai l'impression que les ; foute la merde !
Non mais sérieu, je ne suis pas plus con qu'un autre !!!
regardez :
des erreurs !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 #!/bin/bash # file_read FICHIER=$(cat /home/root/scripts/file.csv) echo $FICHIER for enreg in $FICHIER ; do echo $enreg USER=`echo $enreg | awk -F";" '{ print $1 }'` NOM=`echo $enreg | awk -F";" '{ print $2 }'` PASSWORD=`echo $enreg | awk -F";" '{ print $3 }'` echo "$USER - $NOM - $PASSWORD" # ### ton traitement # done [root@localhost scripts]# ./file_read Jean;lapin;ghsdfjkdf antoine;petit;54sfsdf Jean-François;Saint-James;55454df Mikeal;dubois;; emmanuel;grout;dfklpsdf arnaud;fourquemin;; '/file_read: line 6: syntax error near unexpected token `do '/file_read: line 6: `for enreg in $FICHIER ; do
Je viens de testé avec un fichier sans ;, tjr le même problème !
Vous savez quoi ?
Je suis un DIEU ! j'ai trouvé l'erreur !!!
for var in $FILE ;do
le ;do, il faut le collé !
Sinon j'ai une drole de découpe du fichier CSV :
Ca doit être du au faite que certain login sont sans mot de passe et donc ca merde sur la possition...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 File.CSV : Jean;lapin;ghsdfjkdf antoine;petit;54sfsdf Jean-François;Saint-James;55454df; Mikeal;dubois; emmanuel;grout;dfklpsdf arnaud;fourquemin; >ATTENTION car certain login sont sans mot de passe, dans ce cas, $PASSWORD sera vide Script : #!/bin/bash # file_read FILE=$(cat /home/root/scripts/file.csv) echo $FILE for var in $FILE ;do USER=`echo $var | awk -F";" '{ print $1 }'` NOM=`echo $var | awk -F";" '{ print $2 }'` PASSWORD=`echo $var | awk -F";" '{ print $3 }'` echo "$USER - $NOM - $PASSWORD" done Réponse : [root@localhost scripts]# ./file_read Jean;lapin;ghsdfjkdf; antoine;petit;54sfsdf; Jean-François;Saint-James;55454df; Mikeal;dubois;; emmanuel;grout;dfklpsdf; arnaud;fourquemin;; - ghsdfjkdf - 54sfsdf - 55454dfames - dubois - dfklpsdf - fourquemin
Comment faire pour eviter ce problème ?
Salut
Ne pas laisser la touche maj enfoncée quand on appuis sur espace... Selon la configuration, ça insère une espace insécable qui ne compte pas comme une espace (et pour cause...).Envoyé par arnaudperfect
Je ne fais pas d'espace avec la touche MAJ enfoncé...
le soucie c'est que je ne peux meme pas faire mon traitement après car des que je met des variable en ligne, ca sucre la 1er variable ecrite
salut,
J'ai résolu le problème :
Tout s'affiche correctement, et je peux faire mes différents traitements par la suite.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 #!/bin/bash # file_read FILE=$(cat /home/root/scripts/file.csv) echo $FILE for var in $FILE ;do USER=`echo $var | awk -F";" '{ print $1 }'`NOM=`echo $var | awk -F";" '{ print $2 }'`PASSWORD=`echo $var | awk -F";" '{ print $3 }'` echo "$USER - $NOM - $PASSWORD" done
J'ai une autre question cependant : existe il un moyen pour dire "passe à l'enregistrement suivant"
exemple, le script m'affiche
Toto martin
[différents traitements]
utilisateur existant dans le systeme, voulez vous passez au suivant ?
...
...
merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 #!/bin/bash # file_read FILE=$(cat /home/root/scripts/file.csv) echo $FILE for var in $FILE ;do USER=`echo $var | awk -F";" '{ print $1 }'`NOM=`echo $var | awk -F";" '{ print $2 }'`PASSWORD=`echo $var | awk -F";" '{ print $3 }'` ----- Si (utilisateur présent dans /etc/passwd) alors Utilisateur présent dans le système voulez vous passer à un autre enregistrement ? o/n ---- done
man bash:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 continue [n] Reprendre lexécution à litération suivante dune boucle for, while, until ou encore select. Si n est indiqué, reprendre lexécution à la n-ième boucle imbriquée. n doit être ≥ 1. Si n est supérieur au nombre de boucles imbriquées, lexécution reprend à la boucle la plus externe (la boucle « au som‐ met »). La valeur renvoyée est 0, à moins que linterpréteur ne soit pas en train dexécuter une boucle lorsquil rencontre linstruction continue.
:q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp
:quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT
Jabber: ripat at im.apinc.org
ok, et avec un exemple ca donnerai quoi ?
???
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 for i in 1 2 3 4 ;do echo $i n done
Exemple pratiqueEnvoyé par arnaudperfect
Résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 for i in 1 2 3 4 ; do ((modulo=i%2)) if [[ $modulo != 0 ]] ; then echo "* nombre impair, je continue" continue fi echo "* nombre pair, je cumule ..." ((total=total+i)) done echo "* $total"
* nombre impair, je continue
* nombre pair, je cumule ...
* nombre impair, je continue
* nombre pair, je cumule ...
* 6
Loi de Murphy:
La Théorie c'est quand ça ne marche pas mais que l'on sait pourquoi.
La Pratique c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique ça ne marche pas et on ne sait pas pourquoi.
d'accord
il suffit donc de mettre "continue" pour refaire un tour de boucle dans executer la suite du script contenu dans la boucle... j'ai bien compris ?
Envoyé par arnaudperfect
Tu as tout compris
Loi de Murphy:
La Théorie c'est quand ça ne marche pas mais que l'on sait pourquoi.
La Pratique c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique ça ne marche pas et on ne sait pas pourquoi.
ok, je l'ai utilisé ! nickel ! ca optimise l'execution du script !
en faite je l'utilise car si jamais je veux ajouter un utilisateur sur le système (avec un fichier de réponse > cat, for) et qu'il est déjà présent, je refais un tour de boucle pour faire l'utilisateur suivant sans passé par les étape de génération d'un mot de passe, addgroup, adduser... ca évite d'avoir des messages de ces deux dernières commandes !
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager