[: : 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) |