在 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。我嘗試在條件內$ibash條件內使用/不使用單引號/雙引號來運行它if。該流程仍在建立和顯示中。我本來可以用來grep獲取輸出,但想嘗試這種方式。

請糾正我。

答案1

額外的進程是由管道創建的。

欲了解更多信息,請閱讀此內容對 bash 和進程樹的很好的解釋

請注意, 的輸出ps並非設計為可解析的。當嘗試解析時,ps您很可能最好使用pgrep.

相關內容