2017-11-04 5 views
0

Ich versuche, die unter Shell-Skript test.shein Shell-Skript Ausführen richtiger Prozess zu bekommen zählt

$service=$1 
$count=`ps -ef |grep -i "$service" |grep -v grep | wc -l` 
echo "$count" 

Befehl auszuführen: sh test.sh abcde

Ich erwarte die Skript Ausgang 0, aber es gibt mir 1.

PS: ich werde dieses Skript ausgeführt werden, aus einer pHP-Datei und Eingabe an Skript shell_exec wird Array-Elemente von pHP-Datei seiner

+0

Was sind die Zwischenergebnisse? – Yunnosch

+1

Verwenden Sie [pgrep (1)] (http://man7.org/linux/man-pages/man1/pgrep.1.html) –

+0

'service =" $ 1 "; count = $ (pgrep "$ service" | wc -l) ' – Cyrus

Antwort

1

Sie erhalten 1, weil die Ausgabe von ps -ef den Befehl umfassen

sh test.sh abcde 

und diese Ergebnisse, wenn Sie grep -i "abcde" tun. Sie müssen dies Sie grep aus dem gleichen Grund, um herauszufiltern, herauszufiltern so

ändern
grep -v grep 

zu

grep -E -v 'grep|test\.sh' 
Verwandte Themen