Se crea un nuevo proceso mientras se verifica con 'if' en bash

Se crea un nuevo proceso mientras se verifica con 'if' en bash
ps -ef | while read line; do
    for i in $line; do
        if [ $i = 'bash' ]; then
            echo $line;
        fi;
    done;
done;
unset i;

El comando se ejecuta correctamente y muestra los procesos Bash, pero se está creando y mostrando un proceso Bash adicional. Espero que tenga algo que ver dentro de la ifverificación. Intenté ejecutarlo con/sin comillas simples/dobles tanto dentro $icomo bashdentro de la ifcondición. El proceso aún se está creando y mostrando. Podría haber utilizado greppara obtener el resultado, pero quería probarlo de esta manera.

Por favor corrígeme.

Respuesta1

El proceso adicional lo crea la tubería.

Para más información lee estomuy buena explicación de bash y el árbol de procesos.

Tenga en cuenta que la salida de psno está diseñada para ser analizable. Al intentar analizar, pslo más probable es que sea mejor utilizar pgrep.

información relacionada