为避免双重运行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 ~]$
但这个结果让我很困惑。
答案 0 :(得分:0)
使用命令替换时,会生成新进程。这就是为什么你在第一种情况下看到两个进程,在第二种情况下只看到一个进程。
例如,如果您将命令脚本更改为:
echo $(echo $(ps -ef|grep -v 'grep'|grep $0| wc -l))
您将看到三个进程,因为有两个命令替换