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