
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 if
verificación. Intenté ejecutarlo con/sin comillas simples/dobles tanto dentro $i
como bash
dentro de la if
condición. El proceso aún se está creando y mostrando. Podría haber utilizado grep
para 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 ps
no está diseñada para ser analizable. Al intentar analizar, ps
lo más probable es que sea mejor utilizar pgrep
.