Salut,
je veux savoir comment mettre le résultat de la commande grep dans une variable pour pouvoir tester si le texte recherché a été trouvé ou non.
Est ce que c'est possible?
Merci
Salut,
je veux savoir comment mettre le résultat de la commande grep dans une variable pour pouvoir tester si le texte recherché a été trouvé ou non.
Est ce que c'est possible?
Merci
Bonjour,
c'est possible, mais cela n'a rien d'indispensable :à moins que tu aies besoin du contenu de la recherche ultérieurement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 if echo "foo bar baz" | grep -sq baz then echo "ok" else echo "KO" fi
...
?
Salut
Ta question est assez embêtante car on ne sais pas trop si ton but est de vérifier que grep a trouvé ou bel et bien récupérer son résultat. Mais bon, c'est naturel si tu ne connais pas trop encore les possibilités du shell.
Comme te le montre N_BaH, si tu veux juste vérifier que grep a trouvé, alors tu n'as pas besoin de récupérer son résultat. Car, à l'instar de tout programme Unix, grep se comporte comme un objet booléen. Il renvoie "vrai" s'il trouve et "faux" s'il ne trouve pas.
Et donc on peut directement le mettre dans une alternative if
Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 if grep ... then echo ok else echo bad fi
Maintenant, si tu veux récupérer ce qu'il t'affiche, alors il suffit de le mettre entre backquotes comme toute commande Unix.
Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 res=`grep ...` echo "Le résultat est $res"
Backquotes pouvant, dans les shells récents comme bash, être remplacées par $()
Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 res=$(grep ...) echo "Le résultat est $res"
Ce qui autorise aussi, bien entendu, de vérifier quand-même que ça a réussi
Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 res=$(grep ...) echo "Le résultat est $res" if test -n "$res" then echo ok else echo bad fi
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
Salut,
J'ai besoin d'un script bash de nouveau. Et j'ai la même problématique de vouloir utiliser le résultat d'une commande.
Dans l'exemple ci-dessous le résultat retourné par le script est 0 alors que quand je tape la commande directement dans le terminal, le résultat est 1.
Savez vous pourquoi?
--------------- Le script bash -----------------
------------------------------------------------
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 #!/bin/bash stockNumber=12345 echo $stockNumber grepCommand="grep -c \""$stockNumber"</StockNumber>\" myfile" echo $grepCommand res=$($grepCommand) echo $res
--------------Le contenu de myfile -----------------------
---------------------------------------------------------
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 #!/bin/bash stockNumber=12345 echo $stockNumber grepCommand="grep -c \""$stockNumber"</StockNumber>\" myfile" echo $grepCommand res=$($grepCommand) echo $res
Merci
Corrigé
Je sais pas pourquoi j'avais compliqué les choses
Voilà la solution:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 #!/bin/bash stockNumber="12345" echo $stockNumber grepCommand=$(grep -c "$stockNumber</StockNumber>" myfile) echo $grepCommand
Yep. La syntaxe du grep est simple: on met la chaine à chercher entre guillemets.
Et si on a besoin de chercher des guillemets, là on les protège de backslashes
Code bash : Sélectionner tout - Visualiser dans une fenêtre à part grep "Hector a crié \"en avant\" et nous sommes montés à l'assaut" livre
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
Partager