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

0
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 de Bash, mas um processo adicional de Bash está sendo criado e exibido. Espero que tenha algo a fazer dentro da if checking. Tentei executá-lo com / sem aspas simples / duplas para $i e bash dentro da condição if . O processo ainda está sendo criado e mostrado. Eu poderia ter usado grep para obter a saída, mas queria tentar dessa forma.

Pls me corrija.

    
por Solomon 03.10.2013 / 12:18

1 resposta

1

O processo extra é criado pelo pipe.

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

Observe que a saída de ps não foi projetada para ser analisável. Ao tentar analisar ps , é mais provável que você esteja usando pgrep .

    
por 03.10.2013 / 12:55