LinuxSir.cn,穿越时空的Linuxsir!

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

如何进行类似软件版本号的比较

[复制链接]
发表于 2006-3-10 01:50:40 | 显示全部楼层 |阅读模式
想在SHELL中对当前运行环境中内核版本及编译内核所用的GCC版本进行与期望版本进行比较,已用下面两语句取得这两个值:
KERNEL_VER=`cat /proc/version | awk '{printf $3}'`
KERNEL_GCC_VER=`cat /proc/version | awk '{printf substr($7,1,5)}'`

KERNEL_VER的值为2.6.11.12
KERNEL_GCC_VER的值为3.4.3

现在我希望能比较KERNEL_VER的值(即内核版本)是否低于2.6.2,KERNEL_GCC_VER的值(即现有内核编译所用的GCC版本)是否低于3.0,该如何写这样的判断语句啊,想了一天都没找到方法,实在没辙了,求高手帮帮忙啊!
发表于 2006-3-10 03:18:18 | 显示全部楼层
For the kernel one, you can strip out the third number to compare and for the GCC, compare the second one.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-10 11:44:30 | 显示全部楼层
对于KERNEL,仅比较第三个数字是不够的啊,如果是用的RH9,它的内核是2.4.20,如果按数字比较需要做一个比较复杂点的分支判断(先判断第二个数字,成立再判断第三个数字),有没有方法能把取得的值例如2.6.11.12或2.4.20直接转换成2611和2420,想找下简单点的方法  
回复 支持 反对

使用道具 举报

发表于 2006-3-10 19:56:57 | 显示全部楼层
哦,是这样:
  1. sed 's/\.//g'
复制代码
用这个代码可以去掉所有的"."。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-11 10:15:56 | 显示全部楼层
KERNEL_VER=`cat /proc/version | awk '{printf substr($3,1,6)}' | sed 's/\.//g'`
还是这个方法简单,将取得的内核值直接转为四位整数
回复 支持 反对

使用道具 举报

发表于 2006-3-11 17:38:44 | 显示全部楼层
那其他软件,比如 5.4.2r1 这类,怎么办?不统一的格式,真的很恶心。。:(。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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