目的
1 版本比较
2 浮点比较
版本比较
利用 sort -V 功能
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
compare_nums()
{
#############################################
num1=$1
op=$2
num2=$3
E_BADARGS=65
if ! [[ $num1 =~ ^-?[0-9]+([.][0-9]+)?$ ]]; then >&2 echo "$num1 is not a number"; return $E_BADARGS; fi
if ! [[ $num2 =~ ^-?[0-9]+([.][0-9]+)?$ ]]; then >&2 echo "$num2 is not a number"; return $E_BADARGS; fi
awk 'BEGIN {return_code=('$num1' '$op' '$num2') ? 0 : 1; exit} END {exit return_code}'
return_code=$?
return $return_code
}
a=7.3
b=7
compare_nums $a ">=" $b && echo "yes" || echo "no"
文章提供了一组bash函数用于版本号的比较,如version_gt、version_le等,它们利用sort-V命令处理字符串进行比较。另外,还展示了一个名为compare_nums的bash函数,用于浮点数的比较,确保输入是有效数字并使用awk进行运算判断。
688

被折叠的 条评论
为什么被折叠?



