shell 脚本执行结果是多少?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell 脚本执行结果是多少?相关的知识,希望对你有一定的参考价值。

# cat test.sh
#!/bin/bash

NUM=`ps -ef | grep $0 | grep -v grep | wc -l`

请问脚本执行结果后 NUM 値为多少?
为什么?

参考技术A $0是指你的程序本身,即test.sh
ps -ef是查询所有的进程
grep -v grep是去除grep命令信息
wc -l 是统计有多少个
结果是1追问

答案是 2, 你只看到表象,再想想。

追答

我测试了,确实是2
但,我直接执行:ps -ef | grep $0 | grep -v grep | wc -l 其结果是1

跟踪了一下,发现有一个子进程出现。估计是
NUM=`ps -ef | grep $0 | grep -v grep | wc -l`

这里``中执行时,是单独创建一个子进程完成的这个工作。

本回答被提问者采纳
参考技术B 执行结果是你当前打开的终端数(bash)数量

你打开几个bash界面NUM就是几

ps -ef列出所有进程
grep $0,$0是shell终端的名称,一般是bash
grep -v是从上面的结果里排除掉上条grep命令本身多带来的一行
wc -l是统计最终结果的行数

结果为2的原因是你本身输命令的就是一个bash
然后这个bash又新建了一个bash进程来运行这个脚本
一共两个

如果你多新建几个终端闲置在哪里,结果还会再变追问

你再想想吧,你的回答明显有问题。

以上是关于shell 脚本执行结果是多少?的主要内容,如果未能解决你的问题,请参考以下文章

利用shell脚本执行ssh远程另一台主机执行命令并返回命令的结果集

[shell]实现脚本执行结果匹配某个字符串

利用shell脚本执行ssh远程另一台主机执行命令并返回命令的结果集

linux shell脚本,怎样变量传递执行结果

如何将一shell脚本中的每一步命令执行结果输出到指定日志文件中

如何用Python交互执行shell脚本