Obtenha nomes e versões de aplicativos com BASH e Plistbuddy

3

Estou tentando alimentar o diretório de aplicativos em uma matriz e, em seguida, usar PlistBuddy com as entradas para recuperar informações sobre cada aplicativo instalado. Atualmente, parece não estar separando a lista em entradas de matriz individuais.

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

2 respostas

3

Isso porque você não está criando uma matriz. apps é uma string que contém o resultado de ls /Applications . De qualquer forma, você não precisa do sl, tente algo assim:

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

Alguns aplicativos não tinham uma chave CFBundleShortVersionString. Você também pode usar padrões ou procurar aplicativos com 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

    
por 01.04.2013 / 23:11

Tags