簡體   English   中英

使用 ps|wc -l 有或沒有 bash 變量的差異

[英]Difference using ps|wc -l with or without bash variable

使用 bash,我想了解以下之間的不同輸出:

ps |wc -l
4

n=$(ps|wc -l)
echo $n
5

我猜$(ps|wc -l)指令正在創建一個額外的子進程,但我真的不明白為什么將它添加到 ps 計數中

你說過: $( )創建一個子進程。 因為不帶選項的命令ps精確地列出了當前 shell 的所有子進程,所以你得到了多一行。 我通過用tee替換wc來檢查這一點:

$ ps | tee four

    PID TTY          TIME CMD
XXXXXXX pts/5    00:00:00 bash
YYYYYYY pts/5    00:00:00   ps
ZZZZZZZ pts/5    00:00:00   tee

$ : $(ps -H | tee five)
$ cat five

    PID TTY          TIME CMD
XXXXXXX pts/5    00:00:00 bash
YYYYYYY pts/5    00:00:00   bash
ZZZZZZZ pts/5    00:00:00     ps
ΩΩΩΩΩΩΩ pts/5    00:00:00     tee

我還將-H傳遞給ps以便它證明進程樹。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM