使用 plistbuddy 从 plist 中的字典中读取所有键
Read all keys from a dictionary which in plist using plistbuddy
我想使用 plistbuddy 从 plist 中的字典中读取所有键并将值推送到数组中。
我知道下面的实用程序有助于阅读 plist。
/usr/libexec/PlistBuddy
到目前为止,我正在对密钥进行硬编码以获得价值。
例如:theKey = "selva"
所以我写了下面的代码来获取上面键的值
val=$(function_stringFields "${theFile}" "${theKey}" "${index}")
(function_stringFields
是自定义方法。)
有没有办法达到同样的效果。
plist_file=/Applications/iTunes.app/Contents/Info.plist
keys=(`/usr/libexec/PlistBuddy -c Print "$plist_file" | perl -lne 'print if /^ (\S*) =/'`)
这将创建一个包含所有顶级键的数组 keys
。它所做的只是寻找以四个空格开头然后是一个键然后是“=”的输出。
完成这项工作的关键是 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
我想使用 plistbuddy 从 plist 中的字典中读取所有键并将值推送到数组中。 我知道下面的实用程序有助于阅读 plist。 /usr/libexec/PlistBuddy
到目前为止,我正在对密钥进行硬编码以获得价值。 例如:theKey = "selva"
所以我写了下面的代码来获取上面键的值
val=$(function_stringFields "${theFile}" "${theKey}" "${index}")
(function_stringFields
是自定义方法。)
有没有办法达到同样的效果。
plist_file=/Applications/iTunes.app/Contents/Info.plist
keys=(`/usr/libexec/PlistBuddy -c Print "$plist_file" | perl -lne 'print if /^ (\S*) =/'`)
这将创建一个包含所有顶级键的数组 keys
。它所做的只是寻找以四个空格开头然后是一个键然后是“=”的输出。
完成这项工作的关键是 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