在shell脚本中从plist嵌套字典中读取值

在shell脚本中从plist嵌套字典中读取值

我有一个 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>

如果用户提供了国家名称,我希望获取分配给“Capital”键的值。
例如,如果我执行以下命令,我将获得“Countries”字典下的完整数据。

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

我得到以下输出:

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

我如何修改上述命令以将“国家”键(例如美国)传递给它并获取“首都”键的值?

答案1

默认情况下无法做到这一点,否则会造成很多混乱,但 PlistBuddy 可以:

/usr/libexec/PlistBuddy -c "print :Countries:USA:Capital" /Users/sameerp/Downloads/data.plist

相关内容