pgrep -f avec plusieurs arguments
j'essaie de trouver un processus spécifique contenant le terme "someWord" et deux autres termes représenté par $1 et $2
7 regex="someWord.*$1.*$2"
8 echo "$regex"
9 [ `pgrep -f $regex` ] && return 1 || return 0
qui renvoie
./test.sh foo bar
someWord.*foo bar.*
./test.sh: line 9: [: too many arguments
Ce qui arrive à mon expression régulière? Faire pgrep directement dans le shell fonctionne très bien.
OriginalL'auteur tommsen | 2013-02-12
Vous devez vous connecter pour publier un commentaire.
Bon monsieur, peut-être que ce
ou ce
OriginalL'auteur Steven Penny
Tout d'abord, il n'y a aucune raison pour envelopper votre
pgrep
commande en quoi que ce soit. Suffit d'utiliser son statut de sortie:Si
pgrep
réussit, vous aurez return 1; sinon, retourne 0. Cependant, tout ce que vous faites, c'est d'inverser les attendus des codes de sortie. Ce que vous voulez probablement faire est de simplement laisser lepgrep
être la dernière instruction de votre fonction; puis le code de sortie depgrep
sera le code de sortie de votre fonction.Il ressemble à
$1
est réglé sur "foo bar" et$2
n'est pas définie. Pouvez-vous ajouter plus detest.sh
à la question?OriginalL'auteur chepner
Si vous voulez vraiment faire quelque chose dans le cas où votre commande retourne une erreur:
OriginalL'auteur Anew