Читання значень із плістних вкладених словників у сценарії оболонки


10

У мене є файл plist, і мені цікаво отримати значення з вкладених словників за допомогою скрипту оболонки. Ось структура мого файлу плистів:

 <dict>
   <key>Countries</key>
    <dict>
        <key>USA</key>
        <dict>
           <key>Capital</key>
           <string>Washington DC</string>
           <key>Continent</key>
           <string>North America</string>
        </dict>
           <key>Italy</key>
        <dict>
           <key>Capital</key>
           <string>Rome</string>
           <key>Continent</key>
           <string>Europe</string>
        </dict>
    </dict>
 </dict>

Мене цікавить отримання значення, присвоєного ключу "Капітал", якщо користувач надає ім'я країни.
Наприклад, якщо я виконую наступну команду, я отримую цілі дані в словнику "Країни".

defaults read "/Users/sameerp/Downloads/data" Countries  2>&1   

Я отримую такий вихід:

{
Italy =     {
    Capital = Rome;
    Continent = Europe;
};
USA =     {
    Capital = "Washington DC";
    Continent = "North America";
};
}

Як я можу змінити команду вище, щоб передати їй ключ "Країна" (США наприклад) та отримати значення для ключа "капітал"


Отже, яке ваше питання? Що у вас поки що? Ви не просите, щоб ми написали сценарій для вас правильно?
тердон

@terdon: Я нікого не прошу написати сценарій для мене. Мені хотілося знати, чи є прямий спосіб отримати доступ до значення ключа у вкладеному словнику за допомогою команди «прочитати за замовчуванням».
паління

Відповіді:


13

за замовчуванням не обійтися без безладу, але PlistBuddy:

/usr/libexec/PlistBuddy -c "print :Countries:USA:Capital" /Users/sameerp/Downloads/data.plist
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.