bash で 'if' をチェックしながら新しいプロセスが作成される

bash で 'if' をチェックしながら新しいプロセスが作成される
ps -ef | while read line; do
    for i in $line; do
        if [ $i = 'bash' ]; then
            echo $line;
        fi;
    done;
done;
unset i;

コマンドは Bash プロセスを表示しながら適切に実行されますが、追加の Bash プロセスが作成され、表示されます。チェック内部で何か関係があることを期待しています。条件内と条件のif両方で、一重引用符/二重引用符の有無にかかわらず実行してみました。プロセスはまだ作成され、表示されています。出力を取得するために使用することもできましたが、この方法で試してみたかったのです。$ibashifgrep

訂正して下さい。

答え1

パイプによって追加のプロセスが作成されます。

詳細についてはこちらをご覧くださいbashとプロセスツリーの非常に良い説明

の出力はps解析できるように設計されていないことに注意してください。解析しようとする場合は、psを使用する方が適切である可能性が高くなりますpgrep

関連情報