3

Я пытаюсь передать каталог приложения в массив, а затем использовать PlistBuddy с записями для получения информации о версии каждого установленного приложения. В настоящее время кажется, что список не разделяется на отдельные записи массива.

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

2 ответа2

3

Это потому, что вы не создаете массив. apps - строка, которая содержит результат ls /Applications . В любом случае, вам не нужен ls, попробуйте что-то вроде этого:

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

В некоторых приложениях не было ключа 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .