仅匹配bash脚本条件语句中的一些整数

仅匹配bash脚本条件语句中的一些整数,bash,Bash,这真的很初级,但我厌倦了搜索谷歌,我真的不知道我在寻找什么 我试图构造一个bash脚本,它使用sw_vers从iOS获取版本号,然后运行一个条件语句。但问题是,有些版本只有两个整数,而其他版本只有三个整数。以下是我当前的脚本: #!/bin/bash IOS="`/usr/bin/sw_vers -productVersion`" if (("$IOS" >= "5.0")); then echo "All's good..." else echo "Fail..." f

这真的很初级,但我厌倦了搜索谷歌,我真的不知道我在寻找什么

我试图构造一个bash脚本,它使用sw_vers从iOS获取版本号,然后运行一个条件语句。但问题是,有些版本只有两个整数,而其他版本只有三个整数。以下是我当前的脚本:

#!/bin/bash

IOS="`/usr/bin/sw_vers -productVersion`"
    if (("$IOS" >= "5.0")); then
echo "All's good..."
    else
echo "Fail..."
fi
使用上面的脚本,它可以很好地提取版本,但返回一个
语法错误:算术运算符无效(错误标记为“.0.1>=5”)
,因为我的特定iOS版本是5.0.1

我不喜欢完美匹配,只需要前两个整数就可以了(所以5.0、4.2、4.3等等)

我相信有很多方法可以解决这个问题,我不想找任何花哨的东西。如果我能得到一个通配符或脚本,甚至可以忽略前两个数字之外的任何内容,我就是黄金

谢谢您抽出时间。

类似的

IOS=`/usr/bin/sw_vers -productVersion | awk -F '.' '{ORS=""; print $1; print "."; print $2;}'`

一种常见的技术是:

IFS=. read maj min patch<< EOF $IOS EOF if test $maj -ge 5 && test $min -ge 0; then echo ok fi
如果=。阅读maj min Patch感谢Eugene的回复。我选择了威廉的答案,因为它更完整,更容易在我的头脑中“逆向工程”。不是因为它再“正确”了。谢谢你花时间想出了一个:)@cksum-我刚刚听到了他的答案,所以我同意你的看法 IFS=. read maj min patch<< EOF $IOS EOF if test $maj -ge 5 && test $min -ge 0; then echo ok fi