Chinaunix首页 | 论坛 | 博客
  • 博客访问: 10326962
  • 博文数量: 1669
  • 博客积分: 16831
  • 博客等级: 上将
  • 技术积分: 12594
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-25 07:23
个人简介

柔中带刚,刚中带柔,淫荡中富含柔和,刚猛中荡漾风骚,无坚不摧,无孔不入!

文章分类

全部博文(1669)

文章存档

2023年(4)

2022年(1)

2021年(10)

2020年(24)

2019年(4)

2018年(19)

2017年(66)

2016年(60)

2015年(49)

2014年(201)

2013年(221)

2012年(638)

2011年(372)

分类: 系统运维

2013-11-27 14:45:20

[: : integer expression expected
2011-09-27 16:55:12
标签:linux 逻辑运算 休闲 职场 shell
错误如下,但是传给此脚本值时,能够正常运行,而不报错!
./classid.sh  
./classid.sh: line 8: [: : integer expression expected 
./classid.sh: line 13: [: : integer expression expected 
./classid.sh: line 17: [: : integer expression expected 
 
./classid.sh 6 2
classid 1266


脚本如下
lie=253 
a=$1 
b=$2 
 
if [ "$a" -ge "9" -a "$a" -le "9" ];then 
   classid=$(((a-1)*lie+(b-1))) 
   echo "classid $classid" 
fi 
 
google
test快捷方式[ ],改成使用"[[]]",逻辑运算符  "-a" 改成 "&&" 即可!
if [[ "a" -ge "1" && "$a" -le "9" ]];then 
   classid=$(((a-1)*lie+(b-1))) 
   echo "classid $classid" 
fi 
总结
1 所有字符 与逻辑运算符直接用“空格”分开,不能连到一起。
2 [[]] 运算符只是[]运算符的扩充。能够支持<,>符号运算不需要转义符,它还是以字符串比较大小。里面支持逻辑运算符:|| &&
3 另一种情况
Shell脚本里,在用 test 的参数作比较的时候,如“ [ $temp -gt "100" ]”,
可能会出现的“ integer expression expected”错误。这是因为test 的这几个参数:
 -gt ,-lt,-eq 比较的都是数字,因此变量temp如果是一个字符串的话就会出现上述错误了。
将原句改为“ [ $temp -gt 100 ]” 结果也是一样的。  
更多参考这里


阅读(1954) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~