How to compare two strings in dot separated version format in Bash?

前端 未结 29 1652
慢半拍i
慢半拍i 2020-11-22 06:52

Is there any way to compare such strings on bash, e.g.: 2.4.5 and 2.8 and 2.4.5.1?

29条回答
  •  刺人心
    刺人心 (楼主)
    2020-11-22 07:16

    $ for OVFTOOL_VERSION in "4.2.0" "4.2.1" "5.2.0" "3.2.0" "4.1.9" "4.0.1" "4.3.0" "4.5.0" "4.2.1" "30.1.0" "4" "5" "4.1" "4.3"
    > do
    >   if [ $(echo "$OVFTOOL_VERSION 4.2.0" | tr " " "\n" | sort --version-sort | head -n 1) = 4.2.0 ]; then 
    >     echo "$OVFTOOL_VERSION is >= 4.2.0"; 
    >   else 
    >     echo "$OVFTOOL_VERSION is < 4.2.0"; 
    >   fi
    > done
    4.2.0 is >= 4.2.0
    4.2.1 is >= 4.2.0
    5.2.0 is >= 4.2.0
    3.2.0 is < 4.2.0
    4.1.9 is < 4.2.0
    4.0.1 is < 4.2.0
    4.3.0 is >= 4.2.0
    4.5.0 is >= 4.2.0
    4.2.1 is >= 4.2.0
    30.1.0 is >= 4.2.0
    4 is < 4.2.0
    5 is >= 4.2.0
    4.1 is < 4.2.0
    4.3 is >= 4.2.0
    

提交回复
热议问题