Ios 使用plistbuddy读取plist中的字典中的所有键
我想从使用plistbuddy的plist中读取字典中的所有键,并将值推送到数组中。 我知道下面的实用程序有助于阅读plist。 /usr/libexec/PlistBuddy 到目前为止,我正在硬编码的关键,以获得价值。 例如:theKey=“selva” 所以我写下面的代码来获取上面键的值Ios 使用plistbuddy读取plist中的字典中的所有键,ios,dictionary,plist,Ios,Dictionary,Plist,我想从使用plistbuddy的plist中读取字典中的所有键,并将值推送到数组中。 我知道下面的实用程序有助于阅读plist。 /usr/libexec/PlistBuddy 到目前为止,我正在硬编码的关键,以获得价值。 例如:theKey=“selva” 所以我写下面的代码来获取上面键的值 val=$(function_stringFields "${theFile}" "${theKey}" "${index}") (函数\u stringFields是一种自定义方法。) 无论如何,是否
val=$(function_stringFields "${theFile}" "${theKey}" "${index}")
(函数\u stringFields
是一种自定义方法。)
无论如何,是否有办法实现同样的目标
plist_file=/Applications/iTunes.app/Contents/Info.plist
keys=(`/usr/libexec/PlistBuddy -c Print "$plist_file" | perl -lne 'print $1 if /^ (\S*) =/'`)
这将创建一个数组
keys
,其中包含所有顶级键。它所做的只是寻找以四个空格、一个键和“=”开头的输出。实现这一点的关键是plistbuddy的打印选项。
如果没有参数,它将打印所有行
下面是一个小脚本,它将加载一个键数组和一个值数组
这项工作的成功将真正取决于你在plist中建造了什么样的树。如果它是平的,你会更快乐。此示例也不考虑值中的空格(它们将被删除)
LINES=`/usr/libexec/PlistBuddy FrameworkList.plist-c print | grep=| tr-d''`
计数器=0
对于美元行中的PLIST_项目;
做
键[${COUNTER}]=`echo$PLIST_ITEMS | cut-d=-f1`
值[${COUNTER}]=`echo$PLIST_ITEMS | cut-d=-f2`
计数器=${COUNTER}+1
完成
如果我回显$行,则语句将不带任何空格。实际plist语句的键为“sog”,值为“Stack overflow是一个好博客”。但@LINES的结果是“sog”,值为“Stackoverflowisagoodblog”@无论谁回答,首先我应该承认我对shell脚本已经有2天了。我正在努力理解你的回答。虽然问题是针对plistBuddy的,但人们可能希望签出swift脚本