
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 if
verificação. Tentei executá-lo com/sem aspas simples/duplas para $i
e bash
dentro da if
condição. O processo ainda está sendo criado e mostrado. Eu poderia ter usado grep
para 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 ps
não foi projetada para ser analisável. Ao tentar analisar, ps
provavelmente é melhor usar pgrep
.