使用 BASH 和 Plistbuddy 获取应用程序名称和版本

使用 BASH 和 Plistbuddy 获取应用程序名称和版本

我正在尝试将应用程序目录输入到数组中,然后PlistBuddy与条目一起使用以检索有关已安装的每个应用程序的版本信息。目前似乎没有将列表分成单独的数组条目。

    apps=$(ls /Applications)
        for i in "$apps"
            do
                 /usr/libexec/plistbuddy -c Print:CFBundleShortVersionString: "$i"/Contents/info.plist
            done

答案1

这是因为您没有创建数组。apps是一个包含结果的字符串ls /Applications。 无论如何,您不需要 ls,请尝试以下操作:

for i in /Applications/*
 do
  /usr/libexec/plistbuddy -c Print:CFBundleShortVersionString: "$i"/Contents/Info.plist
done

答案2

有些应用程序没有 CFBundleShortVersionString 键。您也可以使用默认值或使用 mdfind 搜索应用程序:

IFS=$'\n'; for f in $(mdfind kMDItemContentType=com.apple.application-bundle); do printf %s "${f##*/}:"; defaults read "$f/Contents/Info.plist" CFBundleShortVersionString 2> /dev/null || defaults read "$f/Contents/Info.plist" CFBundleVersion 2> /dev/null || echo; done

相关内容