在 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

相关内容