9
Ce message vous semble utile, votez !- Signaler ce message aux modérateurs
|
Affiche ton script en entier, sinon on patauge...
Est-ce qu'il existe un " do" en amont de ton script ? ( du fait de : "syntax error at line 59 : `done' unexpected" )
Z'@+...che.JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé. Répondre à jipicy
10
Ce message vous semble utile, votez !- Signaler ce message aux modérateurs
|
non j ai pas de do en amont Répondre à kloorane |
11
Ce message vous semble utile, votez !- Signaler ce message aux modérateurs
|
Supprime le "done" alors ;-))
Z'@+...che.JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé. Répondre à jipicy
12
Ce message vous semble utile, votez !- Signaler ce message aux modérateurs
|
ça a l'air de marcher
thanks a lot Répondre à kloorane | |
13
Ce message vous semble utile, votez !- Signaler ce message aux modérateurs
|
De rien ;-))
Z'@+...che.JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé. Répondre à jipicy
14
Ce message vous semble utile, votez !- Signaler ce message aux modérateurs
|
Slt,
je sollicite encore ton savoir :)
Cette fois je faire une boucle qui permet de chercher une chaine:
grep "Server started in RUNNING mode" /app/wlsa.log >/dev/null
while [ $? != 0 ]
do
grep "Server started in RUNNING mode" /app/wlsa.log >/dev/null
sleep 10
trace "toujours dans la boucle"
done
Normalement ça doit boucler tant que je n'ai pas ma chaine de caractère ds le fichier.
Ce qui n'est pa le cas.
Est ce que j'ai un prob de syntaxe? Répondre à kloorane
15
Ce message vous semble utile, votez !- Signaler ce message aux modérateurs
|
while [ "$retval" != 0 ]
do
grep "Server started in RUNNING mode" /app/wlsa.log >/dev/null
retval=$?
sleep 10
trace "toujours dans la boucle"
done ;-))
Z'@+...che.JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé. Répondre à jipicy
16
Ce message vous semble utile, votez !- Signaler ce message aux modérateurs
|
oui mais la var retval a quelle valeur au début, ne faut il pas l'initialiser au départ? Répondre à kloorane |
17
Ce message vous semble utile, votez !- Signaler ce message aux modérateurs
|
Aucune, donc différente de zéro, et de part là même ça passe ;-))
Z'@+...che.JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé. Répondre à jipicy
18
Ce message vous semble utile, votez !- Signaler ce message aux modérateurs
|
est ce qu'on est sur à 100% qu'elle ne peut jamais prendre la valeur 0 au départ? Répondre à kloorane |
19
Ce message vous semble utile, votez !- Signaler ce message aux modérateurs
|
Dans ce cas l'écrire comme ça : while [ "${retval:=1}" != 0 ]ou encore comme ça : while [ "${retval:~1}" != 0 ]Voir sujet dans la FAQ : le remplacement de variables en shell bash
;-))
Z'@+...che.JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé. Répondre à jipicy
20
Ce message vous semble utile, votez !- Signaler ce message aux modérateurs
|
Mais dans ce cas retval aura toujours la valeur 1, la boucle sera infini.
Or moi ce que je veux c'est:
1- Faire le grep "Server started in RUNNING mode" /app/wlsa.log >/dev/null
2- Récuperer le resultat du grep
3-Si cette valeur est différente de 0 refaire le grep tant que la valeur est différente de 0.
A un moment la valeur du grep sera égale à 0 et là il faudra sortir de la boucle.
J'espere que c'est plus clair.
Merci pour ton aide précisese. Répondre à kloorane |
21
Ce message vous semble utile, votez !- Signaler ce message aux modérateurs
|
Mais dans ce cas retval aura toujours la valeur 1, la boucle sera infini.
Non, la valeur "1" n'est attribuée que si la variable n'est pas définie, ce qui est le cas avant la 1ère boucle, mais pas dans les autres boucles.
Quoi qu'il en soit, la 1ère solution marchait aussi, la variable renvoyant une valeur vide différente de "0"...
Voilà un exemple : jp@MDK:~/tmpfs ssh$ cat kloorane # fichier de référence
Mais dans ce cas retval aura toujours la valeur 1, la boucle sera infini.
Or moi ce que je veux c'est:
1- Faire le grep "Server started in RUNNING mode" /app/wlsa.log >/dev/null
2- Récuperer le resultat du grep
3-Si cette valeur est différente de 0 refaire le grep tant que la valeur est différente de 0.
A un moment la valeur du grep sera égale à 0 et là il faudra sortir de la boucle.
J'espere que c'est plus clair.
Merci pour ton aide précisese
jp@MDK:~/tmpfs ssh$ cat foo.sh # le script
#! /bin/bash
unset retval # on efface la variable
while [ "$retval" != "0" ]
do
grep "jipicy" kloorane # on cherche "jipicy" dans le fichier de référence
retval=$?
sleep 3 # permettra d'introduire le mot "jipicy" en cours d'exécution
echo "Toujours dans la boucle"
done
echo
echo "La valeur a été trouvée"
echo "Arrêt du script"
exit 0
jp@MDK:~/tmpfs ssh$ sh foo.sh # lancement du script
Toujours dans la boucle # Pas de valeur "jipicy" de trouver
Toujours dans la boucle # idem
Toujours dans la boucle # idem
Toujours dans la boucle # La valeur est envoyée
jipicy # la valeur est trouvée
Toujours dans la boucle # la boucle s'arrêtera après ça
La valeur a été trouvée
Arrêt du script
jp@MDK:~/tmpfs ssh$ La valeur a été envoyée pendant l'exécution du script sous la forme : echo "jipicy" >> kloorane ;-))
Z'@+...che.JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé. Répondre à jipicy
22
Ce message vous semble utile, votez !- Signaler ce message aux modérateurs
|
J'ai essayé avec les 2 méthodes:
while [ "$retval" != "0" ]
et while [ "${retval:=1}" != 0 ]
Ca marche bien la 1ere fois ms qd je reteste une 2ème fois ça marche pas!
On dirait que retval garde l'ancienne valeur.
As tu une idée? Répondre à kloorane |
23
Ce message vous semble utile, votez !- Signaler ce message aux modérateurs
|
Lance ton script en mode débogage ("set -xv") et vois ce que ça donne...
"set +xv" pour revenir au mode normal.
Z'@+...che.JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé. Répondre à jipicy | | | | | | | |