Shell script: lire une chaine de caractere da

Fermé
kloorane - 30 avril 2007 à 13:30
 sambooor - 22 mai 2008 à 19:56
Bjr à tous,
Je sis débutant en shell script.
En fait je veux créer un programme en korn shell qui va me permettre d'aller lire une chaine de caractère dans un fichier et me retourner sa valeur.
y a t il une commande qui pemret de faire ça?
mERCI D AVANCE
A voir également:

5 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
30 avril 2007 à 14:34
grep "toto" /app/shell/test >/dev/null ; if [ "$?" = 0 ]; then ls ; fi ; done
PS. Dans mon message précédent, j'avais oublié de mettre le fichier "test" dans 'grep "toto" /app/shell/test'
0
au risque d'être chiant, à quoi sert >/dev/null
Merci pour ton aide
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
30 avril 2007 à 14:46
Ça redirige ce qui est sensé être envoyé sur la sortie standard (dans notre cas stdout=l'écran), vers une sorte de poubelle virtuelle sans fond. En gros tout ce que tu ne veux pas voir apparaître sur ton écran (ou dans un fichier le cas échéant, tout dépend de la redirection), tu l'envoies vers "/dev/null".

Sans cette directive, en sus du listage de ton répertoire, tu aurais auparavant l'affichage de la ligne contenant "toto".
0
j ai l'erreur suivante qui apparaît qd j execute mon script
"syntax error at line 59 : `done' unexpected"
Voila ce que je fais:

grep "Server started in RUNNING mode" /app/bea/wlsa >/dev/null
if [ "$?" = 0 ]
then

trace "Demarrage du serveur"
executer_remote_script $APPLI_SRV $EXPLOIT sys_managesrv.ksh start
retour=$?
if [ $retour -eq 3 ]
then
exit 3;
fi

trace "Fin de Lancement de l'application "

fi
done

En fair, je veux que mon script consulte le fichier wlsa, et qu'il n'execute ce qui vient après le then qu'une fois il y aura la chaine "Server started in RUNNING mode" écrite ds le fichier wlsa.

Help!
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
30 avril 2007 à 17:25
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" )
0
non j ai pas de do en amont
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
30 avril 2007 à 17:38
Supprime le "done" alors ;-))
0
kloorane > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
30 avril 2007 à 17:55
ça a l'air de marcher
thanks a lot
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
30 avril 2007 à 18:00
De rien ;-))
0
kloorane > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
30 avril 2007 à 20:49
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?
0
bonjour,


j'ai la ligne suivante :

export HORCMINST="29"
SVP, comment puis-je afficher le chiffre 29 seul.?
awk ??

Merci
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
21 mai 2008 à 13:59
Salut,
 echo 'export HORCMINST="29"' | grep -o '[0-9]\+'
;-))
0
sambooor > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
22 mai 2008 à 19:56
salut
merci pour ta reponse, ce ke tu ma di ca marche bien. mais jai deja trouver une autre solution, en fait, le chiffre entre guillemet change, ex export HORCMINST="1033". demain je tenvoi la solution paseke mnt chui chez moi (pas a mon bureau)

salutation
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
30 avril 2007 à 13:33
Salut,

Normalement avec "grep" (man grep) ça doit le faire, mais il faut être plus précis sur ce que tu veux vraiment faire (donnes-nous un exemple concret).

;-))
-1
je vais être un peu plus précis.
je veux créer un shell avec la condition suivante:
Tant que
je ne trouve pas la chîne de caractère "toto" dans le fichier "test"qui se trouve dans /app/shell
ne rien faire
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
30 avril 2007 à 14:01
Re-

Ce que tu veux faire n'est pas très orthodoxe dans le sens où il vaudrait mieux programmer un truc dans le genre :

Tant que "je trouve la chaîne "toto" dans "/app/shell"; faire bla bla bla...

ou alors :

Tant que "je ne trouve pas la chaîne "toto" dans "/app/shell"; faire bla bla bla...

Mais bon voici quand même ce que tu veux (enfin presque) :
grep "toto" /app/shell ; while [ "$?" != 0 ]; do echo "Je ne fais rien"; done
;-))
0
kloorane > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
30 avril 2007 à 14:24
merci pour ta réponse.
En fait ce que je veux faire c'est:
exécuter une commande (par ex ls) qu'une fois j'aurai trouvé la chaine de caractère "toto" ds /app...
a ton avis...
0