我正在尝试将应用程序目录输入到数组中,然后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