我想要读取字典中的所有键,这些键在plist中使用plistbuddy并将值推送到数组中。 我知道下面的实用程序有助于阅读plist。 的/ usr /的libexec / PlistBuddy
到目前为止,我很难对密钥进行编码以获得价值。 例如:theKey =" selva"
所以我写下面的代码来获取上面的值
val=$(function_stringFields "${theFile}" "${theKey}" "${index}")
(function_stringFields
是一种自定义方法。)
无论如何都要实现同样的目标。
答案 0 :(得分:2)
plist_file=/Applications/iTunes.app/Contents/Info.plist
keys=(`/usr/libexec/PlistBuddy -c Print "$plist_file" | perl -lne 'print $1 if /^ (\S*) =/'`)
这将创建一个包含所有顶级键的数组keys
。它所做的只是寻找以四个空格开头然后是一个键的输出,然后是" ="。
答案 1 :(得分:1)
完成此任务的关键是plistbuddy的打印选项。 没有参数,它将打印出所有行。
这是一个小脚本,它将加载一组键和值数组。
这的成功将取决于您在plist中可能构建的树类型。如果它是平的,你会更快乐。此示例也未考虑值中的空格(它们将被删除)。
LINES=`/usr/libexec/PlistBuddy FrameworkList.plist -c print | grep = | tr -d ' '`
COUNTER=0
for PLIST_ITEMS in $LINES;
do
KEY[${COUNTER}]=`echo $PLIST_ITEMS | cut -d= -f1`
VALUE[${COUNTER}]=`echo $PLIST_ITEMS | cut -d= -f2`
COUNTER=${COUNTER}+1
done