【发布时间】:2021-04-30 09:22:20
【问题描述】:
使用 bash,我想了解两者之间的不同输出:
ps |wc -l
4
和
n=$(ps|wc -l)
echo $n
5
我猜$(ps|wc -l) 指令正在创建一个额外的子进程,但我不太明白为什么它会被添加到 ps 计数中
【问题讨论】:
使用 bash,我想了解两者之间的不同输出:
ps |wc -l
4
和
n=$(ps|wc -l)
echo $n
5
我猜$(ps|wc -l) 指令正在创建一个额外的子进程,但我不太明白为什么它会被添加到 ps 计数中
【问题讨论】:
你说过:$( ) 创建一个子进程。因为不带选项的命令ps 精确地列出了当前shell 的所有子进程,所以你会得到多一行。我通过将wc 替换为tee 来检查这一点:
$ 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,以便它证明进程树。
【讨论】: