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
Version imprimable
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érieurementCode:
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:
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:
1
2 res=`grep ...` echo "Le résultat est $res"
Backquotes pouvant, dans les shells récents comme bash, être remplacées par $()
Code:
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:
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
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:
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:
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:
1
2
3
4
5
6 #!/bin/bash stockNumber="12345" echo $stockNumber grepCommand=$(grep -c "$stockNumber</StockNumber>" myfile) echo $grepCommand