Shell 脚本比较软件版本号

一、场景介绍

  在软件开发过程中,特别是版本部署或者别的业务场景逻辑中,都需要对同一个应用的不同版本做部署或者应用操作。这时候需要使用版本号来做业务控制。比如:在容器化部署过程中,每次部署相同应用的时候,都需要部署容器仓库中最新版本的镜像到本地容器。

二、操作方法
  • 脚本操作

    [root@node100 build]# sort -V no.txt | sed '/p-/d' > sort.txt
    [root@node100 build]# cat sort.txt 
    1.0.0.1
    1.0.0.2
    1.0.0.3
    1.0.0.4
    1.0.0.5
    1.0.0.6
    1.0.0.7
    1.0.0.8
    1.0.0.9
    [root@node100 build]# sort -rV no.txt | sed '/p-/d' > sort.txt
    [root@node100 build]# cat sort.txt 
    1.0.0.9
    1.0.0.8
    1.0.0.7
    1.0.0.6
    1.0.0.5
    1.0.0.4
    1.0.0.3
    1.0.0.2
    1.0.0.1
    [root@node100 build]#     
    
  • 获取最新的版本号(获取排序后文件中的第一行)

    # 获取最新的版本号
    lastestversion=`sed -n '1p' sort.txt`
    
  • 比较版本号自定义函数

    • 函数定义

      function version_gt() { test "$(echo "$@" | tr " " "\n" | sort -V | head -n 1)" != "$1"; }
      function version_le() { test "$(echo "$@" | tr " " "\n" | sort -V | head -n 1)" == "$1"; }
      function version_lt() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" != "$1"; }
      function version_ge() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" == "$1"; }
      
    • 使用示例

      #!/bin/bash
       
      VERSION=$1
      VERSION2=$2
       
      function version_gt() { test "$(echo "$@" | tr " " "\n" | sort -V | head -n 1)" != "$1"; }
      function version_le() { test "$(echo "$@" | tr " " "\n" | sort -V | head -n 1)" == "$1"; }
      function version_lt() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" != "$1"; }
      function version_ge() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" == "$1"; }
       
      if version_gt $VERSION $VERSION2; then
         echo "$VERSION is greater than $VERSION2"
      fi
       
      if version_le $VERSION $VERSION2; then
         echo "$VERSION is less than or equal to $VERSION2"
      fi
       
      if version_lt $VERSION $VERSION2; then
         echo "$VERSION is less than $VERSION2"
      fi
       
      if version_ge $VERSION $VERSION2; then
         echo "$VERSION is greater than or equal to $VERSION2"
      fi
      
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值