Novo processo sendo criado durante a verificação com 'if' no bash

Novo processo sendo criado durante a verificação com 'if' no bash
ps -ef | while read line; do
    for i in $line; do
        if [ $i = 'bash' ]; then
            echo $line;
        fi;
    done;
done;
unset i;

O comando é executado corretamente exibindo os processos Bash, mas um processo Bash adicional está sendo criado e exibido. Espero que tenha algo a ver com a ifverificação. Tentei executá-lo com/sem aspas simples/duplas para $ie bashdentro da ifcondição. O processo ainda está sendo criado e mostrado. Eu poderia ter usado greppara obter a saída, mas queria tentar desta forma.

Por favor, corrija-me.

Responder1

O processo extra é criado pelo pipe.

Para mais informações leia istoexplicação muito boa do bash e da árvore de processos.

Observe que a saída de psnão foi projetada para ser analisável. Ao tentar analisar, psprovavelmente é melhor usar pgrep.

informação relacionada