仅通过主要和次要版本号匹配 macOS 版本号
Match the macOS version number only by major and minor version number
尝试处理 10.12.3 的结果 - 当 OS 有可选的第三个数值要考虑时,我将如何编码?而且,当然,这经常变化,所以我不想寻找扩展更新。只是主要 OS 10.12、10.11、10.10 等
if [ "$osv" = "10.12" ];
then
appi="Applications:App Store.app:Contents:Resources:AppIcon.icns"
elif [ "$osv" = "10.11" ];
then
appi="Applications:App Store.app:Contents:Resources:appStore.icns"
else
exit
fi
谢谢。
你可以使用变量 $osv
,只保留前两个字段(假设字段用 .
分隔),然后在 if/else
语句中使用结果(s ):
v=$(echo "$osv" | awk -F. 'BEGIN{OFS="."}{print ,}')
所以如果 $osv
是 10.12.3
,v
将是 10.12
。如果 $osv
只是 10.12
,v
也将等于此值。
使用 =~
、Bash 的 regex-matching 运算符,在 [[ ... ]]
:
内
if [[ $osv =~ ^10\.12(\.?|$) ]]; # ...
这匹配 10.12
和 10.12.3
,例如。
通过一些重复,您还可以在 case
语句中使用 glob-style patterns,这可能是您的最佳选择:
osv=$(sw_vers -productVersion) # yields, e.g., '10.12' or '10.12.3'
case $osv in
10.12|10.12.*)
appi="Applications:App Store.app:Contents:Resources:AppIcon.icns"
;;
10.11|10.11.*)
appi="Applications:App Store.app:Contents:Resources:appStore.icns"
;;
*)
exit
esac
注:
Patterns(也用于 globbing)是:
在概念上更简单,但比 regexes(正则表达式)更强大。
可用于 [[ ... ]]
内 ==
的 RHS 以及 case
语句中的字符串匹配(见上文;在 [=16= 内) ], 它们的使用甚至 POSIX-compliant).
相比之下,正则表达式只能用于[[ ... ]]
内部的字符串匹配,使用=~
运算符。
尝试处理 10.12.3 的结果 - 当 OS 有可选的第三个数值要考虑时,我将如何编码?而且,当然,这经常变化,所以我不想寻找扩展更新。只是主要 OS 10.12、10.11、10.10 等
if [ "$osv" = "10.12" ];
then
appi="Applications:App Store.app:Contents:Resources:AppIcon.icns"
elif [ "$osv" = "10.11" ];
then
appi="Applications:App Store.app:Contents:Resources:appStore.icns"
else
exit
fi
谢谢。
你可以使用变量 $osv
,只保留前两个字段(假设字段用 .
分隔),然后在 if/else
语句中使用结果(s ):
v=$(echo "$osv" | awk -F. 'BEGIN{OFS="."}{print ,}')
所以如果 $osv
是 10.12.3
,v
将是 10.12
。如果 $osv
只是 10.12
,v
也将等于此值。
使用 =~
、Bash 的 regex-matching 运算符,在 [[ ... ]]
:
if [[ $osv =~ ^10\.12(\.?|$) ]]; # ...
这匹配 10.12
和 10.12.3
,例如。
通过一些重复,您还可以在 case
语句中使用 glob-style patterns,这可能是您的最佳选择:
osv=$(sw_vers -productVersion) # yields, e.g., '10.12' or '10.12.3'
case $osv in
10.12|10.12.*)
appi="Applications:App Store.app:Contents:Resources:AppIcon.icns"
;;
10.11|10.11.*)
appi="Applications:App Store.app:Contents:Resources:appStore.icns"
;;
*)
exit
esac
注:
Patterns(也用于 globbing)是:
在概念上更简单,但比 regexes(正则表达式)更强大。
可用于
[[ ... ]]
内==
的 RHS 以及case
语句中的字符串匹配(见上文;在 [=16= 内) ], 它们的使用甚至 POSIX-compliant).
相比之下,正则表达式只能用于
[[ ... ]]
内部的字符串匹配,使用=~
运算符。