shell 版本号比较_用shell如何比较软件版本号的大小

好比你想写个脚原本比较两个版本号 (如"1.2.30" 和"1.3.0")来辨认哪一个版本是最新的,有能够比较两个版本号字符串的shell脚本吗?shell

当你写了一个shell脚本,想使用脚原本比较两个版本号,而后能区分哪一个版本号更高哪一个版本号更低。好比,你安装某个软件的时候,要求是版本号要大于1.3.0,想验证最低配置要求.又或者你想在shell脚本中写版本号判断(好比版本号若是介入1.0.0 ≤ 版本 ≤ 2.3.1).bash

若是你想经过shell来比较两个版本号字符串的话最简单的就是使用sort命令。加上参数"-V"后sort命令就能够把文本中的版本号给排序出来(默认是递增的排序),而后你想倒叙排序的话那就使用参数"-rV"便可.less

下面咱们就来看下在shell中怎么使用sort命令来比较版本号吧函数

对于要比较版本号字符串的话,下面的这些使用了sort命令的自定义函数可能会派上用场.spa

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"; }

上面的脚本主要是比较两个不一样版本的文本,会得出大于、等于、小于、大于等于等结果。你能够根据本身的须要使用自定义函数。code

下面是一个比较的示例.blog

#!/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
相关文章
相关标签/搜索