设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
注册
快捷导航
平台
Portal
论坛
BBS
文库
项目
群组
Group
我的博客
Space
搜索
搜索
热搜:
shell
linux
mysql
本版
用户
LinuxSir.cn,穿越时空的Linuxsir!
»
论坛
›
Linux 综合讨论区 —— LinuxSir.cn
›
shell进阶应用、shell编程
›
请问如何比较数字字符串
返回列表
查看:
1180
|
回复:
6
请问如何比较数字字符串
[复制链接]
onlyclimb
onlyclimb
当前离线
积分
751
IP卡
狗仔卡
发表于 2003-5-21 21:01:02
|
显示全部楼层
|
阅读模式
比如 a=“2"
b=“120"
如何在bash下 把a和b 直接转化为 数字?
望高手指教
刚学shell ,见谅
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
KornLee
KornLee
当前离线
积分
6960
IP卡
狗仔卡
发表于 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是自动识别你设置的变量是否是数字或字符的!
回复
支持
反对
使用道具
举报
显身卡
lucida
lucida
当前离线
积分
2492
IP卡
狗仔卡
发表于 2003-5-21 22:39:08
|
显示全部楼层
用declare -i可以强制指定为int类型
如果只是计算,也可以可以用$(($a*$b))这样的表达式
再就是如斑竹所说,根据你用的操作符来判断类型
回复
支持
反对
使用道具
举报
显身卡
onlyclimb
onlyclimb
当前离线
积分
751
IP卡
狗仔卡
楼主
|
发表于 2003-5-21 23:03:01
|
显示全部楼层
thanks
回复
支持
反对
使用道具
举报
显身卡
KornLee
KornLee
当前离线
积分
6960
IP卡
狗仔卡
发表于 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.
回复
支持
反对
使用道具
举报
显身卡
lucida
lucida
当前离线
积分
2492
IP卡
狗仔卡
发表于 2003-5-22 19:36:12
|
显示全部楼层
因为字母c的十进制是12,字母d的十进制是13.
--------这里是按照ascii代码来比较的吧。。怎么会是12/13了
回复
支持
反对
使用道具
举报
显身卡
KornLee
KornLee
当前离线
积分
6960
IP卡
狗仔卡
发表于 2003-5-22 21:37:34
|
显示全部楼层
sorry~~,;)
c的ASCII码应该是63H,d的ASCII码是64H,我把c和d当成十六进制来转换成十进制啦~~
回复
支持
反对
使用道具
举报
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
计算机认证考试学习与经验交流
Linux小型、嵌入式系统
Redhat/Fedora/CentOS Linux
Ubuntu Linux 专题讨论
Copyright © 2002-2023
LinuxSir.cn
(http://www.linuxsir.cn/) 版权所有 All Rights Reserved.
Powered by
RedflagLinux!
技术支持:
中科红旗
|
京ICP备19024520号
快速回复
返回顶部
返回列表