শেল স্ক্রিপ্টে plist নেস্টেড অভিধান থেকে মানগুলি পড়া


10

আমার একটি প্লিস্ট ফাইল রয়েছে এবং আমি শেল স্ক্রিপ্টটি ব্যবহার করে নেস্টেড ডিকশনারি থেকে মান আনতে আগ্রহী। এখানে আমার প্লাস্ট ফাইলের কাঠামোটি রয়েছে:

 <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";
};
}

এটি "দেশ" কী (উদাহরণস্বরূপ মার্কিন যুক্তরাষ্ট্র) পাস করার জন্য এবং উপরের কমান্ডটি কীভাবে সংশোধন করব এবং "মূলধন" কীটির মান আনব?


সুতরাং আপনার প্রশ্ন কি? এতক্ষণ তোমার কী আছে? আপনি ঠিক আমাদের জন্য স্ক্রিপ্ট লিখতে বলছেন না?
টেরডন

@ এটারডন: আমি কাউকে আমার জন্য স্ক্রিপ্ট লিখতে বলছি না। "ডিফল্ট পড়ুন" কমান্ডটি ব্যবহার করে নেস্টেড ডিকশনারিতে কোনও কী এর মান অ্যাক্সেস করার সরাসরি উপায় আছে কিনা তা আমি জানতে চেয়েছিলাম।
ধূমপানগুলি

উত্তর:


13

ডিফল্টরা খুব বেশি গণ্ডগোল ছাড়াই এটি করতে পারে না, তবে প্লিস্টবাডি করবে:

/usr/libexec/PlistBuddy -c "print :Countries:USA:Capital" /Users/sameerp/Downloads/data.plist
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.