免费注册 查看新帖 |

Chinaunix

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

字符->数字的比较 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-03-30 17:19 |只看该作者 |倒序浏览
disk.sh

#!/bin/sh
ULOADPARAVASIZE=`snmpwalk -v 1 192.168.0.196 -c public
.1.3.6.1.4.1.2021.9.1.7|awk -F ":" '{print $2}'`
DISK=`echo $ULOADPARAVASIZE|awk -F " " '{print $1}'`
echo $DISK
#DISK是磁盘空间3009504
if [ "$DISK" -ge 3000000 ]
then
        echo "/ has reached the limited size" >> /tmp/disk1test
        echo "ok"
else
        echo "error"
fi

命令行下执行:./disk.sh    输出:
3009508
ok

可是放到crontab里执行,出现:

Message 3:
From root  Tue Mar 30 22:42:04 2004
Date: Tue, 30 Mar 2004 22:42:03 +0800
From: root@www.linux.home (Cron Daemon)
To: root@www.linux.home
Subject: Cron <root@www> /tmp/disk.sh
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <ATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>


/tmp/disk.sh: [: : integer expression expected

可能是$DISK被看成字符了,怎么办呢?

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
2 [报告]
发表于 2004-03-30 18:15 |只看该作者

字符->数字的比较

为保险起见修改下面一行:
DISK=`echo $ULOADPARAVASIZE|awk -F " " '{print $1}'`
改为:
DISK=`echo $ULOADPARAVASIZE|awk -F " " '{print +$1}'`

论坛徽章:
0
3 [报告]
发表于 2004-03-31 11:36 |只看该作者

字符->数字的比较

[root@www tmp]# mail
Mail version 8.1 6/6/93.  Type ? for help.
"/var/spool/mail/root": 1 message 1 new
>N  1 root@www.linux.home   Wed Mar 31 17:24  18/515   "Cron <root@www> /tmp/disk.sh"
& p 1
Message 1:
From root  Wed Mar 31 17:24:00 2004
Date: Wed, 31 Mar 2004 17:24:00 +0800
From: root@www.linux.home (Cron Daemon)
To: root@www.linux.home
Subject: Cron <root@www> /tmp/disk.sh
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <ATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>

0
error

&

和之前比没有了[: : integer expression expected ,那个+表示什么意思呢?

不过echo "/ has reached the limited size" >> /tmp/disk1test还是 没有执行,

再帮我看看,谢谢!

论坛徽章:
0
4 [报告]
发表于 2004-03-31 11:36 |只看该作者

字符->数字的比较

[root@www tmp]# mail
Mail version 8.1 6/6/93.  Type ? for help.
"/var/spool/mail/root": 1 message 1 new
>N  1 root@www.linux.home   Wed Mar 31 17:24  18/515   "Cron <root@www> /tmp/disk.sh"
& p 1
Message 1:
From root  Wed Mar 31 17:24:00 2004
Date: Wed, 31 Mar 2004 17:24:00 +0800
From: root@www.linux.home (Cron Daemon)
To: root@www.linux.home
Subject: Cron <root@www> /tmp/disk.sh
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <ATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>

0
error

&

和之前比没有了[: : integer expression expected ,那个+表示什么意思呢?

不过echo "/ has reached the limited size" >> /tmp/disk1test还是 没有执行,

再帮我看看,谢谢!

论坛徽章:
0
5 [报告]
发表于 2004-03-31 11:36 |只看该作者

字符->数字的比较

[root@www tmp]# mail
Mail version 8.1 6/6/93.  Type ? for help.
"/var/spool/mail/root": 1 message 1 new
>N  1 root@www.linux.home   Wed Mar 31 17:24  18/515   "Cron <root@www> /tmp/disk.sh"
& p 1
Message 1:
From root  Wed Mar 31 17:24:00 2004
Date: Wed, 31 Mar 2004 17:24:00 +0800
From: root@www.linux.home (Cron Daemon)
To: root@www.linux.home
Subject: Cron <root@www> /tmp/disk.sh
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <ATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>

0
error

&

和之前比没有了[: : integer expression expected ,那个+表示什么意思呢?

不过echo "/ has reached the limited size" >> /tmp/disk1test还是 没有执行,

再帮我看看,谢谢!

论坛徽章:
0
6 [报告]
发表于 2004-03-31 15:55 |只看该作者

字符->数字的比较

crontab->配置文件/etc/crontab中:
PATH=/sbin:/bin:/usr/sbin:/usr/bin

disk.sh中snmpwalk命令位于/usr/local/bin/snmpwalk,所以crontab中找不到snmpwalk命令可执行。

shell环境下,我设了snmpwalk的命令路径,所以可执行。

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
7 [报告]
发表于 2004-03-31 16:45 |只看该作者

字符->数字的比较

原帖由 "jywah"]和之前比没有了[: : integer expression expected ,那个+表示什么意思呢? [/quote 发表:


[quote]原帖由 "jywah" 发表:
crontab->配置文件/etc/crontab中:
PATH=/sbin:/bin:/usr/sbin:/usr/bin

disk.sh中snmpwalk命令位于/usr/local/bin/snmpwalk,所以crontab中找不到snmpwalk命令可执行。

shell环境下,我设了snmpwalk的命..........


crontab中命令的路径找不到是常见的错误,保险的办法是使用绝对路径。当然你的办法也不错。

对于snmpwalk我不熟,对它的输出也一无所知,我上一贴只是根据给出的出错信息"头痛医头"罢了。"隔靴搔痒",没有切中要害,见谅!hehe.

"+"是awk的一元算术操作符,用在这里主要就是为了创造一个数字上下文,"+$1"将$1强制转换为数字,如为"1000000byte"这样的就自动去掉不需要的"byte"字符,如果原来就是数字,$1的值也不会改变。没别的,就是一个自动取得数字值的小技巧而已。
如果$1=="abc"或者$1=="", 则"+$1"就等于数字"0"。这就是为什么你的脚本不再抱怨"[: : integer expression expected "的原因了。当然问题的关键还是snmpwalk命令没有正常运行。

论坛徽章:
0
8 [报告]
发表于 2004-04-01 09:32 |只看该作者

字符->数字的比较

谢谢你,woodie。
我对shell编程不熟悉,项目里正好用到一点,正在学呢,呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP