【问题标题】:How to determine Mac OS X version in shell script?如何在 shell 脚本中确定 Mac OS X 版本?
【发布时间】:2019-08-05 00:49:13
【问题描述】:

如果它在 Capitan 下运行,我需要使用一组参数运行 make,而在 Sierra 中运行其他参数。 换一种说法: 我在命令行中运行:

sw_version 产品名称:Mac OS X 产品版本:10.13.6

如何将 ProductVersion 的值传递给变量并检查它 如果当前操作系统版本

【问题讨论】:

    标签: macos shell version


    【解决方案1】:

    试试sw_vers 命令。在此处查看示例: https://www.cyberciti.biz/faq/mac-osx-find-tell-operating-system-version-from-bash-prompt/

    获取产品版本:

    sw_vers | grep ProductVersion | cut -d':' -f2
    

    比较解析后的值:

    base_ver=10.13
    ver=$(sw_vers | grep ProductVersion | cut -d':' -f2 | tr -d ' ')
    if [ $(echo -e $base_ver"\n"$ver | sort -V | tail -1) == "$base_ver" ]
    then 
       echo "older"
    else 
       echo "newer"
    fi
    

    【讨论】:

    • 谢谢!如何将值 10.13 读取到脚本中的变量然后进行比较?
    • 谢谢!注意: tere 是标志: sw_vers -productVersion 可能我们不需要 grep
    • 顺便说一句,ver=10.13.6 这就是它比较不正确的原因。如何从版本中仅获得 10.13?或分别 10 和 13 然后比较
    • 你的意思是它比较不正确?如果 ver=10.13.6 那么它比 10.13 更新,这是我的建议将输出的。无论如何,如果您只想以 $ver 获得 10.13,您可以尝试:ver=$(sw_vers | grep ProductVersion | cut -d':' -f2 | tr -d ' ' | rev| cut -d'.' -f2-| rev)
    • sw_vers -productVersion 提供与sw_vers | grep ProductVersion | cut -d':' -f2 相同的输出,只是获得它的方式更简洁
    最近更新 更多