错误如下,但是传给此脚本值时,能够正常运行,而不报错!
- ./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
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 ]” 结果也是一样的。
更多参考这里
本文转自 dongnan 51CTO博客,原文链接:http://blog.51cto.com/dngood/675325