由于PlistBuddy并不在Mac默认的Path里,所以我们得通过绝对路径来引用这个工具:
查看帮助
/usr/libexec/PlistBuddy --help
打印:
打印info.plist文件
/usr/libexec/PlistBuddy -c "print" info.plist
添加
# 添加普通字段:
/usr/libexec/PlistBuddy -c 'Add :Version string 1.0' info.plist
# 添加数组字段,分两步走,注意:key之间用 : 隔开,且不能有空格:
# 先添加key值
/usr/libexec/PlistBuddy -c 'Add :Application array' info.plist
# 添加value值
/usr/libexec/PlistBuddy -c 'Add :Application: string app1' info.plist
/usr/libexec/PlistBuddy -c 'Add :Application: string app2' info.plist
/usr/libexec/PlistBuddy -c 'Add :Application: string app3' info.plist
# 添加字典字段,分两步走:
# 先添加key值
/usr/libexec/PlistBuddy -c 'Add :Person dict' info.plist
# 添加value值,
/usr/libexec/PlistBuddy -c 'Add :Age string secret' info.plist
/usr/libexec/PlistBuddy -c 'Add :Person:Name string yans67' info.plist
/usr/libexec/PlistBuddy -c 'Add :Person:sex string boy' info.plist
/usr/libexec/PlistBuddy -c 'Add :Person:weight string 65' info.plist
输出
打印字段相应的值:
# version为当前脚本上级目录中,iosapp目录下的TEST-Info.plist的CFBundleShortVersionString对应value
version=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" $(cd `dirname $0`; pwd)/../iosapp/TEST-Info.plist)
# 在array中我们还可以根据下标打印某个特定的值
/usr/libexec/PlistBuddy -c 'Print :Application:2' info.plist
删除
# 删除字段相应的值:
/usr/libexec/PlistBuddy -c 'Delete :Version' info.plist
修改
# 修改某个字段相应的值:
/usr/libexec/PlistBuddy -c 'Set :Application:1 string "thi is app1"' info.plist
合并
# 当有两个plist文件的时候,我们可以对其进行合并操作
# 将A.plist 合并到 B.plist中
/usr/libexec/PlistBuddy -c 'Merge A.plist' B.plist
# 终端中会提示B.plist中有重复的键值,所以默认跳过该键值的合并