J'essaie:
#!/bin/bash
if $(ps -C "bm_d21_debug")
then
kill $(ps -C "bm_d21_debug" -o pid=)
echo "exists"
fi
3 Réponses :
Je suggère d'utiliser des crochets également: mais cette commande retournera toujours "oui" ($? = 0) p> p>
Les crochets carrés me font peur, mais je l'ai réparé en passant à ce code: Stackoverflow.com/a/54846069/11107107 Merci!
corrigé en passant à la section
if ps aux | grep ./bm_d21_debug | grep -v grep >/dev/null;then
pid=$(ps aux | grep ./bm_d21_debug | grep -v grep | awk '{print $2}')
kill $pid
echo $pid
fi
Considérez cette ligne: Vous exécutez la commande Le premier Le mot de la sortie PS est vous voulez juste p> ps code> dans une substitution de commande, qui renvoie la sortie de commande. La commande si code> est alors essuie de exécuter sortie forte> comme une commande pid code>, lequel si code> fonctionnera comme nom de commande. Ainsi, la "commande non trouvée" "erreur" p>
C'était mon problème. Merci!
Je suggère:
si PS -C "bm_d21_debug" code>Vous voudrez lire la page
pkill code> man '. Ça va vous rendre la vie plus facile.C'est juste étrange que si je copie et coller tuer $ (PS -C "BM_D21_DEBUG" -O PID =) Cela fonctionne bien. Mais si je copie et coller tout ce bloc, il meurt sur cette ligne: tuer $ (PS -C "BM_D21_DEBUG" -O PID =
shellcheck détecte automatiquement Ce problème . Vous pouvez avoir votre éditeur sur la volée.