Home > Software engineering >  how to use plutil to get a value?
how to use plutil to get a value?

Time:03-18

I need get value of "ProductVersion" and output: "15.1" I have versions of plutil, but can't get the value

plutil -key ProductVersion myfile //not working

here is the myfile content:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
      <key>ProductVersion</key>
        <string>15.1</string>
        <key>SystemImageID</key>
        <string>3DD7870B-96BB-4BA1-9C54-306734147FFE</string>
        <key>Version</key>
        <string>Version</string>
    </dict>
</dict>
</plist>

Help of plutil:

-help                   Print this message
-full                   Print an exhaustive list of options
-verbose                Show verbose output
-show                   Show property list data
-keys                   List top level dictionary keys
-create                 Create a new empty property list

-key keyname            Recover value for key. Multiple uses builds keypath
-value value            Set value for keypath
-remove                 Remove value at keypath
-type typeid            Type to use while setting key. Valid types are int,
                        float, bool, json, and string (default). Use json to
                        define arrays and dictionaries
-convert format         Convert each property list file to selected format.
                        Formats are xml1 and binary1 and json. Note that json
                        files are saved to filename.json

CodePudding user response:

Your plist file is malformed; the closing </dict> tag is duplicated. This needs to be fixed.

plutil as shipped with macOS 12.3 does not have a -key option (anymore), but you can use PlistBuddy:

/usr/libexec/PlistBuddy -c "Print :ProductVersion" myfile
  • Related