为什么在同一个linux命令中得到不同?

时间:2014-04-25 09:36:35

标签: bash shell unix

为避免双重运行shell,我写这个。

[user01@host ~]$ cat singleRun.sh
#/bin/env bash
echo `ps -ef|grep -v 'grep'|grep $0|wc -l`
sleep 1
ps -ef|grep -v 'grep'|grep $0|wc -l
[user01@host ~]$ sh singleRun.sh
2
1
[user01@host ~]$

但这个结果让我很困惑。

1 个答案:

答案 0 :(得分:0)

使用命令替换时,会生成新进程。这就是为什么你在第一种情况下看到两个进程,在第二种情况下只看到一个进程。

例如,如果您将命令脚本更改为:

echo $(echo $(ps -ef|grep -v 'grep'|grep $0| wc -l))

您将看到三个进程,因为有两个命令替换