
ps -ef | while read line; do
for i in $line; do
if [ $i = 'bash' ]; then
echo $line;
fi;
done;
done;
unset i;
Der Befehl wird ordnungsgemäß ausgeführt und zeigt die Bash-Prozesse an, aber es wird ein zusätzlicher Bash-Prozess erstellt und angezeigt. Ich hoffe, dass dies etwas mit der Prüfung zu tun hat . Ich habe versucht, ihn mit/ohne einfache/doppelte Anführungszeichen sowohl für als auch innerhalb der Bedingung if
auszuführen . Der Prozess wird immer noch erstellt und angezeigt. Ich hätte verwenden können , um die Ausgabe zu erhalten, wollte es aber auf diese Weise versuchen.$i
bash
if
grep
Bitte korrigieren Sie mich.
Antwort1
Der zusätzliche Prozess wird durch die Pipe erstellt.
Weitere Informationen finden Sie hiersehr gute Erklärung der Bash und des Prozessbaums.
Beachten Sie, dass die Ausgabe von ps
nicht zum Parsen vorgesehen ist. Beim Parsen ps
sind Sie wahrscheinlich besser dran, wenn Sie verwenden pgrep
.