这真的很简陋,但我已经厌倦了搜索谷歌,我根本不知道我在寻找什么。
我正在尝试构建一个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
使用上面的脚本,它可以很好地提取版本,但返回syntax error: invalid arithmetic operator (error token is ".0.1 >= 5")
,因为我的特定iOS版本是5.0.1。
我不关心完美匹配,只是前两个整数很好(所以5.0,4.2,4.3等)。
我确信有很多方法可以解决这个问题,我并不是在寻找任何有趣的东西。如果我可以获得通配符或脚本甚至忽略前两个数字之外的任何内容,我就是金色的。
感谢您的时间。
答案 0 :(得分:1)
一个常见的技术是:
IFS=. read maj min patch<< EOF $IOS EOF if test $maj -ge 5 && test $min -ge 0; then echo ok fi
这会将$ IOS分解为3个组件,$ maj,$ min和$ patch。如果IOS只有两个组件,那么$ patch将是空字符串。请注意,如果maj或min不是整数(例如“5a”),则会发出警告并且测试将失败。此外,我添加了$ min -ge 0的测试仅用于演示,但可以省略(除非你可能得到负版本号!)。
答案 1 :(得分:0)
像
这样的东西IOS=`/usr/bin/sw_vers -productVersion | awk -F '.' '{ORS=""; print $1; print "."; print $2;}'`
或
IOS=`/usr/bin/sw_vers -productVersion | cut -d . -f 1,2`