Neuer Prozess wird beim Prüfen mit „if“ in Bash erstellt

Neuer Prozess wird beim Prüfen mit „if“ in Bash erstellt
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 ifauszufü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.$ibashifgrep

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 psnicht zum Parsen vorgesehen ist. Beim Parsen pssind Sie wahrscheinlich besser dran, wenn Sie verwenden pgrep.

verwandte Informationen