LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1160|回复: 6

请问如何比较数字字符串

[复制链接]
发表于 2003-5-21 21:01:02 | 显示全部楼层 |阅读模式
比如 a=“2"
b=“120"
如何在bash下 把a和b 直接转化为 数字?

望高手指教
刚学shell ,见谅
发表于 2003-5-21 21:13:30 | 显示全部楼层
这个问题你可以自己作个实验试试,
$a="2"
$b="120"
$c=$a*$b
$echo $a*$b|bc -q
240
$a=2
$b=120
$if [ $b > $a ] ; then echo "$b is big";fi
120 is big
由此看出,shell是自动识别你设置的变量是否是数字或字符的!
发表于 2003-5-21 22:39:08 | 显示全部楼层
用declare -i可以强制指定为int类型

如果只是计算,也可以可以用$(($a*$b))这样的表达式

再就是如斑竹所说,根据你用的操作符来判断类型
 楼主| 发表于 2003-5-21 23:03:01 | 显示全部楼层
thanks
发表于 2003-5-22 18:20:04 | 显示全部楼层
当 你声明的变量是字符时,那么,shell也可以进行比较,它依据的是字符在ASCII中的值的大小来比较的,如:
$a=c
$b=d
$if [[ $a > $b ]] then
>echo ok
>else
>echo bad
>fi
bad
很显然,结果肯定是显示bad,因为字母c的十进制是12,字母d的十进制是13.
发表于 2003-5-22 19:36:12 | 显示全部楼层
因为字母c的十进制是12,字母d的十进制是13.

--------这里是按照ascii代码来比较的吧。。怎么会是12/13了
发表于 2003-5-22 21:37:34 | 显示全部楼层
sorry~~,;)
c的ASCII码应该是63H,d的ASCII码是64H,我把c和d当成十六进制来转换成十进制啦~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表