如何在OSX的终端中返回应用程序版本

Sha*_*nIT 5 macos terminal

我需要在Mac osX 10.10的.sh脚本中使用应用程序版本,以便可以与另一个数字进行比较,以便可以强制进行更新或不进行更新。

到目前为止,我有这个(我以Firefox.app为例)

FirefoxmdlsVersion= mdls -name kMDItemVersion /Applications/Firefox.app;
echo $FirefoxmdlsVersion
Run Code Online (Sandbox Code Playgroud)

这返回kMDItemVersion = "34.0"了朝正确方向迈出的一步,但我只需要数字即可进行比较示例340

这是我尝试使用新变量执行的操作,但是我完全没有收到错误或输出

FFV2=${FirefoxmdlsVersion//'kMDItemVersion ='}
FFV3=${FirefoxmdlsVersion:18:4}
Run Code Online (Sandbox Code Playgroud)

我可能在这里走错了方向,但我看了一个帖子,还没有取得任何进展。谁能帮我?

Mic*_*ann 7

如果您已安装Xcode和开发人员工具,则可以始终使用PlistBuddy ...

例如:

/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" /Applications/TextEdit.app/Contents/Info.plist
Run Code Online (Sandbox Code Playgroud)

还给我还给我1.10优胜美地的版本号。

任何应用程序的Info.plist文件通常在“ CFBundleShortVersionString”键下都有一个版本。


Ben*_*min 5

要向列表中添加一个选项,您还可以使用该defaults工具。

例如:

defaults read /Applications/Firefox.app/Contents/Info.plist CFBundleShortVersionString

CFBundleShortVersionString将从Firefox 的 Info.plist 文件中输出条目的值,例如:74.0

我更喜欢使用该defaults命令,因为使用它没有任何前提条件,而且命令非常简单。


CRD*_*CRD 4

tr您也可以使用:

FirefoxmdlsVersion= mdls -name kMDItemVersion /Applications/Firefox.app | tr -d ".";
Run Code Online (Sandbox Code Playgroud)

产生3405(从 Firefox 34.0.5 开始)

  • 您可以使用“-raw”标志来代替“tr”:“FirefoxmdlsVersion= mdls -raw -name kMDItemVersion /Applications/Firefox.app”。 (3认同)