免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1637 | 回复: 7
打印 上一主题 下一主题

请问一下shell脚本,在sh下手工输入正常,写入脚本不正常 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-01-18 02:05 |只看该作者 |倒序浏览
如下两个命令,取得当前主机在线或者不在线.区别是在最后部份,0x2与0x0,实际在ssh下能得到正确的结果,如下所示.

# cat /proc/net/arp | grep  -q '^172\.16\.0\.108     0x1         0x2'
# echo $?
0
# cat /proc/net/arp | grep  -q '^172\.16\.0\.108     0x1         0x0'
# echo $?
1

当将此命令写入脚本时,部份如下所示.

#!/bin/sh

i=0
y=1
x=1
cat /proc/net/arp | grep  -q '^172\.16\.0\.108     0x1         0x2'
while [ $i == 0 ];do

echo $?

当改变上面的为cat /proc/net/arp | grep  -q '^172\.16\.0\.108     0x1         0x0'.时,调试输出依然是显示0,不管是写0x2还是0x0,好像脚本并不处理^172\.16\.0\.108后面的部份.

请问此问题该如何解决.看了遍shell暂时没方向感.

论坛徽章:
3
戌狗
日期:2014-09-10 17:07:162015年辞旧岁徽章
日期:2015-03-03 16:54:15wusuopu
日期:2016-06-17 17:43:45
2 [报告]
发表于 2009-01-18 02:08 |只看该作者
cat /proc/net/arp | grep  -q '^172\.16\.0\.108     0x1         0x2'
while [ $i == 0 ];do

echo $?

这个$?是 [ $i == 0 ] 的返回值

论坛徽章:
0
3 [报告]
发表于 2009-01-18 02:14 |只看该作者
谢谢指正,脚本更换一下位置现在正常了.

原来是自己搞错了,还以为$?这个值都是这个grep使用的.

[ 本帖最后由 ftwcy 于 2009-1-18 02:29 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2009-01-18 14:08 |只看该作者
echo $?

不能写在脚本里

论坛徽章:
0
5 [报告]
发表于 2009-01-18 21:00 |只看该作者
原帖由 changzi100 于 2009-1-18 14:08 发表
echo $?

不能写在脚本里


嗯.收到,当时写在那里是因为程序一直不能按我设计的意愿执行,所以就在那里写一个显示的,看看程序执行到那里究竟有什么问题

根据2楼的意思,明白后,将程序改成下面的就正常了,
while [ $i == 0 ];do
cat /proc/net/arp | grep  -q '^172\.16\.0\.108     0x1         0x2'
echo $?

因为我原程序是这样的,
while [ $i == 0 ];do

if []

fi

done

要用到cat /proc/net/arp | grep  -q '^172\.16\.0\.108     0x1         0x2' 返回的值判断再执行.总之谢谢了.现在问题解决了.


另外就是再问一下'^172\.16\.0\.108     0x1         0x2' 这个引号里的东西能不能用*%其它的东西写得更简便些,现在我的程序只能复制过去使用,不知道那几个空该怎么处理.

论坛徽章:
3
戌狗
日期:2014-09-10 17:07:162015年辞旧岁徽章
日期:2015-03-03 16:54:15wusuopu
日期:2016-06-17 17:43:45
6 [报告]
发表于 2009-01-18 21:11 |只看该作者
  1. cat /proc/net/arp | grep  -q '^172.16.0.108 *0x1 *0x2'
复制代码

论坛徽章:
0
7 [报告]
发表于 2009-01-18 22:03 |只看该作者

回复 #1 ftwcy 的帖子

返回值不正确

论坛徽章:
0
8 [报告]
发表于 2009-01-19 13:15 |只看该作者
原帖由 ynchnluiti 于 2009-1-18 21:11 发表
cat /proc/net/arp | grep  -q '^172.16.0.108 *0x1 *0x2'


您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP