【发布时间】:2022-11-11 15:40:58
【问题描述】:
我对此感到最艰难,想知道是否有人可以提供帮助。我正在尝试比较两个版本并在版本旧时输出一些东西。这是我所拥有的一个例子。
monterey="17612.4.9.1.8"
version=$(defaults read /Applications/Safari.app/Contents/Info.plist CFBundleVersion)
if [ "$version" -ge "$monterey" ] ; then
echo "Up to date"
else
echo "Needs update"
fi
exit 0
我想做的是将Safari“版本”版本与“monterey”版本进行比较。如果 Safari 大于或等于“Monterey”,则回显“Up to date”。
但是每次我尝试这样做时,我都会得到“预期的整数表达式”,或者如果我尝试 >= 我会得到“预期的一元运算符”。
这个应该怎么写?
【问题讨论】:
-
考虑更新问题以向我们展示
version变量中的内容,并解释您认为预期的输出应该是什么;版本字符串比较通常需要比较每个元组或简单地将 2 个版本字符串提供给sort -V,然后您可以将第一(或第二)行与您希望看到的内容进行比较,让您知道哪个字符串“更大”;例如,printf "%s\n" "${monterey}" "${version}" | sort -V -
@markp-fuso 不错!我不知道
-V排序选项。今天学习了,谢谢。
标签: bash macos safari macos-monterey