如何使用 plutil 获取值?

how to use plutil to get a value?

我需要获取“ProductVersion”的值并输出:“15.1” 我有 plutil 的版本,但无法获取值

plutil -key ProductVersion myfile //不工作

这是我的文件内容:

<?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>

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

您的 plist 文件格式不正确;结束 </dict> 标签重复。这需要修复。

macOS 12.3 附带的

plutil 没有 -key 选项(不再),但您可以使用 PlistBuddy:

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

这是在 Mac OS 12.3.

上使用 plutil 从 plist 文件获取值的方法
plutil -extract "ProductVersion" raw myfile

如果你需要知道值的类型,你可以先做:

plutil -type "ProductVersion" my file