쉘 스크립트에서 plist 중첩 사전에서 값 읽기


10

plist 파일이 있고 쉘 스크립트를 사용하여 중첩 된 사전에서 값을 가져 오는 데 관심이 있습니다. 내 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

@ terdon : 나는 누군가를 위해 스크립트를 작성하도록 요구하지 않습니다. "defaults read"명령을 사용하여 중첩 된 사전에서 키 값에 직접 액세스 할 수있는 방법이 있는지 알고 싶었습니다.
smokinguns

답변:


13

기본값은 많은 혼란 없이이 작업을 수행 할 수 없지만 PlistBuddy는 다음을 수행합니다.

/usr/libexec/PlistBuddy -c "print :Countries:USA:Capital" /Users/sameerp/Downloads/data.plist
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.