免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1901 | 回复: 4

[Linux资讯] 命令在脚本与命令行输出结果不一致 [复制链接]

论坛徽章:
1
申猴
日期:2013-10-18 10:42:24
发表于 2014-05-16 10:30 |显示全部楼层
  1. #!/bin/bash
  2. keepa=`ps aux | grep "keepalive" | sed '/grep/d' | wc -l `
  3. echo $keepa
复制代码
执行结果后会出现5或者6,而keepalive只有3个进程。
  1. ps aux | grep "keepalive" | sed '/grep/d' | wc -l
复制代码
在secureCRT直接用鼠标复制的这条命令,在命令行输出正常~

我郁闷了好久,发现唯一不同的也就是有一个#!/bin/bash
去掉,果然正常了~
想请教下各位大大,这个#!/bin/bash怎么会影响到输出值~

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
发表于 2014-05-16 12:02 |显示全部楼层
哪有这么取的.
  1. # ps -ef | grep httpd
  2. root      4548     1  0 May05 ?        00:00:21 /usr/sbin/httpd
  3. root     16258 11256  0 12:00 pts/3    00:00:00 grep httpd
  4. apache   25420  4548  0 May11 ?        00:00:08 /usr/sbin/httpd
  5. apache   25422  4548  0 May11 ?        00:00:00 /usr/sbin/httpd
  6. apache   25423  4548  0 May11 ?        00:00:00 /usr/sbin/httpd
  7. apache   25424  4548  0 May11 ?        00:00:00 /usr/sbin/httpd
  8. apache   25425  4548  0 May11 ?        00:00:00 /usr/sbin/httpd
  9. apache   25426  4548  0 May11 ?        00:00:00 /usr/sbin/httpd
  10. apache   25427  4548  0 May11 ?        00:00:00 /usr/sbin/httpd
  11. apache   25428  4548  0 May11 ?        00:00:00 /usr/sbin/httpd
  12. apache   25429  4548  0 May11 ?        00:00:00 /usr/sbin/httpd

  13. # ps -ef | grep [h]ttpd
  14. root      4548     1  0 May05 ?        00:00:21 /usr/sbin/httpd
  15. apache   25420  4548  0 May11 ?        00:00:08 /usr/sbin/httpd
  16. apache   25422  4548  0 May11 ?        00:00:00 /usr/sbin/httpd
  17. apache   25423  4548  0 May11 ?        00:00:00 /usr/sbin/httpd
  18. apache   25424  4548  0 May11 ?        00:00:00 /usr/sbin/httpd
  19. apache   25425  4548  0 May11 ?        00:00:00 /usr/sbin/httpd
  20. apache   25426  4548  0 May11 ?        00:00:00 /usr/sbin/httpd
  21. apache   25427  4548  0 May11 ?        00:00:00 /usr/sbin/httpd
  22. apache   25428  4548  0 May11 ?        00:00:00 /usr/sbin/httpd
  23. apache   25429  4548  0 May11 ?        00:00:00 /usr/sbin/httpd
复制代码
上面是正确的取法.

你那个bash加上之后, 多了一个 子shell, 而这个shell的名字很可能跟你的keepa是匹配的. 所以, 才会多出两个. 改个名字, 再用上面我的试试.

论坛徽章:
1
申猴
日期:2013-10-18 10:42:24
发表于 2014-05-16 15:41 |显示全部楼层
回复 2# q1208c


    谢谢q1208c大大回答~
1、keepa换一个名字还是不行的。还是会多出两个!
2、取法里边那个grep的中括号是怎么个理解方法,没搞懂~

论坛徽章:
0
发表于 2014-05-16 16:08 |显示全部楼层
最简单的分析方法:
    #!/bin/bash
    keepa=`ps aux | grep "keepalive" | sed '/grep/d' `
    echo $keepa
这就能看出为什么多出东西来啦。

我猜可能是要在
keepa=`ps aux | grep "keepalive" | sed '/grep/d' | wc -l `
这行里加个grep -v grep试试

论坛徽章:
1
申猴
日期:2013-10-18 10:42:24
发表于 2014-05-16 16:22 |显示全部楼层
回复 4# ccddtt


    噢!找到了~
多谢ccddtt兄~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP