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.