使用 plistBuddy 获取值数组

Posted

技术标签:

【中文标题】使用 plistBuddy 获取值数组【英文标题】:Get Array of Values using plistBuddy 【发布时间】:2016-11-30 05:04:18 【问题描述】:
var="keychain-access-groups"
declare -a val=$( /usr/libexec/PlistBuddy -c "Print $var" "sample.plist")
echo $val
echo $val[0]

输出:

Array  ABCD.com.bus.NoEntitlements ABCD.com.bus.sharing 
Array  ABCD.com.bus.NoEntitlements ABCD.com.bus.sharing 

如何获取数组中的第一项?

【问题讨论】:

【参考方案1】:

似乎PlistBuddy 产生这样的输出:

Array 
    ABCD.com.bus.NoEntitlements
    ABCD.com.bus.sharing

即多行。如果要获取Array的元素,需要先切掉第一行和最后一行:

/usr/libexec/PlistBuddy | sed -e 1d -e '$d'

接下来,要将其读入 Bash 数组,您需要用另一个 (...) 包围 $(...) 子shell,如下所示:

declare -a val=($(/usr/libexec/PlistBuddy | sed -e 1d -e '$d'))

之后,您可以使用$val[0] 访问第一个值,使用$val[1] 访问第二个值。

【讨论】:

以上是关于使用 plistBuddy 获取值数组的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PlistBuddy 中输入数据

java通过数组值怎样获取数组下标

Firebase 观察并取值到数组

javascript中数组取值的问题,如何取出键值对中的值?

如何用js取值json的数据

使用 PlistBuddy 处理 hdiutil 输出