尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

在编写 shell 脚本时,要比较版本号大小,为什么使用 sort -V 就能正确比较出版本号的大小关系

在编写 shell 脚本时,要比较版本号大小,为什么使用 sort -V 就能正确比较出版本号的大小关系
📅 发布时间:2026/6/19 3:46:13

在编写 shell 脚本时,要比较版本号大小,为什么使用 "sort -V" 就能正确比较出版本号的大小关系

版本号的两种格式

版本号的基本格式:x.y.z

  • x:表示主版本号,涉及到重大的变更,不向下兼容时递增
  • y:表示次版本号,一般新增功能后能向下兼容时递增
  • z:表示补丁版本,修复 bug、小改动、打补丁这些就会递增。

版本号的扩展格式:x.y.z-xxx

  • beta:公测版,功能完成但不稳定。
  • alpha:内测版,功能未完成
  • rc:候选版,基本稳定。
  • dev:开发版本,改变随时都可能变更,不稳定。
  • release / stable:正式版,生产环境使用

如何比较版本大小

不适用的方法:

  • 数值运算比较:因为版本号字符串包含多个字段,还可能包含字母等非数值字符。(无法直接转换为整、小数数进行比较。)

  • 字符串比较法:因为字符串是按字符逐个比较 ASCII 值,例如:"1.2" 大于 "1.10"(与版本号的数值逻辑完全不一致)


很好用的方法:

在 Linux 操作系统中,sort 命令的 -V 参数就是专门设计来用于版本号比较的,任意格式的版本号都可以进行比较,逻辑如下:

  • 将字符串拆分成 数字块(数值字符) + 非数字块(字母、符号等非数值字符) ,如:1.1.1f ⇒ 1 . 1 . 1 f

  • 数字块按数值比较(10 > 2),非数字块按 ASCII 比较(f > 空字符)

  • 两个字符串的块与块逐个比较,直到得出结果。


例如:比较 1.1.1f 和 1.1.1

段 1.1.1f 1.1.1 类型 结果
1 1 1 数字 相等
2 . . 字符 相等
3 1 1 数字 相等
4 . . 字符 相等
5 1 1 数字 相等
6 f (空) 字符 有内容 > 空

sort -V 语法格式:

语法:多行输入 | sort -V

常用的方式:echo -e "V1\nV2" | sort -V

注意:sort -V 的输入必须要是“多行文本”,也就是必须有换行分隔,每个版本号占一行,每行就是一个元素。


例如:

echo -e "1.1.1f\n1.1.1" | sort -V# 输出(默认升序排序,小的在前面)
1.1.1
1.1.1f

相关新闻

  • 模电乱写
  • TiDB为什么它正成为取代MySQL的新宠?
  • [数据存储/数据库/分布式系统] 一致性哈希算法

最新新闻

  • 石家庄黄金回收正规军在哪?2026实测门店星级榜,卖金前看一眼 - 奢侈品回收测评
  • 深度学习进阶(三十一)FlashAttention:IO 感知的精确注意力
  • 6个免费方法让你的手机视频秒变MP4 - 软件工具教程方法
  • Kali Linux实战:ARP欺骗攻击原理、环境搭建与Wireshark流量分析
  • 杭州靠谱品牌首饰回收排行,光谱验金透明称重全款现结 - 奢品小当家
  • 2026年安徽省合肥市合肥医药卫生学校招生简章官网发布:报名入口+报考指南 - cc江江

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号