从Shell脚本中的plist嵌套字典中读取值


10

我有一个plist文件,我对使用shell脚本从嵌套字典中获取值感兴趣。这是我的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 2012年

@terdon:我不是要任何人为我编写脚本。我想知道是否存在使用“默认读取”命令访问嵌套字典中键值的直接方法。
smokeuns 2012年

Answers:


13

默认值不会造成很多混乱,但是PlistBuddy将:

/usr/libexec/PlistBuddy -c "print :Countries:USA:Capital" /Users/sameerp/Downloads/data.plist
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.