Bienvenue visiteur (Inscription |  Connexion)
Qui est en ligne ?
Il y a : 20 utilisateurs en ligne, consultez le détail
Auteur Message
loub
#0 Message posté le : 07-01-2007 à 11:25:29


Petit scarabée


Forum : Inscrit
Association :
Arrivé(e) le : 16-01-2003
Nombre de messages : 16
Bonjour,

Je cherche à récupérer le résultat d'un grep dans une variable dans un script.

J'ai donc qqch dans le genre:


#!/bin/bash
s='grep "Il y a" ./karo.htm'
echo "s= $s"


Le résultat est l'affichage du string: grep "Il y a" ./karo.htm.
Donc, il ne m'exécute pas le grep et ne m'affiche que la commande.

J'ai aussi essayé:


#!/bin/bash
s='eval grep "Il y a" ./karo.htm'
echo "s= $s"


Et dans ce cas, le résultat est: eval grep "Il y a" ./karo.htm.

Je suis persuadé que ça ne doit pas être bien compliqué mais sur ce coup-là, je suis vraiment bloqué.

Merci d'avance pour votre aide.

Val
loub
#1 Message posté le : 07-01-2007 à 11:40:46


Petit scarabée


Forum : Inscrit
Association :
Arrivé(e) le : 16-01-2003
Nombre de messages : 16
OK, je pense que j'ai trouvé, bien que tout commentaire ou autre suggestion soit les bienvenus.

Voilà ce que ça donne:

#!/bin/bash
s="$(grep "Il y a" ./karo.htm)"
echo "s= $s"


Et là j'ai bien le résultat de mon grep dans ma variable $s

C'est quand même bizarre parce que j'ai trouvé des tutoriels sur le net et ils disaient que ce qui est entre simples quotes est exécuté.

Bref, je suis débloqué donc ça me convient.

a+
Val
léo
#2 Message posté le : 07-01-2007 à 11:53:28


Naboo


Forum : Inscrit
Association :
Arrivé(e) le : 09-04-2003
Nombre de messages : 2073
Je pense que c'est ` , AltGrad+7, qu'il faut mettre et pas '.

Et echo $s devrait suffire.

--Message édité par léo le 07-01-2007 à 11:55:33--


-------------------------------------
Tant qu'il y aura des hommes, il y aura des tanks.(Audiberti)
loub
#3 Message posté le : 07-01-2007 à 19:27:03


Petit scarabée


Forum : Inscrit
Association :
Arrivé(e) le : 16-01-2003
Nombre de messages : 16
Léo,

Bien vu! En effet, en lisant les articles traitant de ça, je n'avais pas vu la différence entre ' et ` ...

Comme quoi on a quelque fois la solution en face des yeux...

Merci beaucoup à toi, ça me sera bien utile.

Val
Azollyx
#4 Message posté le : 07-01-2007 à 21:24:46


Naboo


Forum : Modérateur
Association : Président
Arrivé(e) le : 09-04-2006
Nombre de messages : 2085
C'est effectivement s=`cmd` qu'il faut utiliser. La syntaxe s=$(cmd) marche aussi et a l'avantage de permettre plus d'imbrications : truc=$(`cmd`) (la sortie de cmd est donc ici un nom de commande). Les guillemets simples servent à l'échappement : tout ce qui est 'entre ceux-ci' est laissé tel quel ; les "doubles" ont la même fonction mais sont moins forts ($, ` et \ sont interprétés).

Je conseille donc d'écrire s="`cmd`" au cas où la sorte de cmd contiendrait des espaces.

-------------------------------------
toto