这命令echo `ps aux|grep $0|grep -v grep|mawk '{print $3}'`在终端输出是一个数值,
在脚本中会输出两个值,为什么?
- 0次
- 2021-07-20 03:47:36
- idczone
脚本如下:
#!/bin/bash
# using recursion
# cpu使用率
echo `ps aux|grep $0|grep -v grep|mawk '{print $3}'`
有一个是当前脚本的进程?
其实写成这样就能看出区别:
echo `ps aux|grep $0|grep -v grep|mawk '{print $3}'`
ps aux|grep $0|grep -v grep|mawk '{print $3}'
第一行还是输出两个的。
因为是在子shell里面运行,里面的$0和外面的不一样。
但如果想取ps aux|grep $0|grep -v grep|mawk '{print $3}'的值,
num=`ps aux|grep $0|grep -v grep|mawk '{print $3}'`
echo $num
这样值还是两个
只要放在``里面就就是子shell了啊,只要是子shell那一定就不对了。
A: fine
echo `ps aux|grep $$|grep -v grep|awk '{print $3}'`
B : fine
ps aux|awk '($2 == PROCINFO["ppid"]){print $3}'
C : better
export shpid=$$
echo `ps aux|awk '($2 == ENVIRON["shpid"]){print $3}'`