从plist到shell脚本plist buddy读取数组

时间:2014-05-07 12:52:05

标签: ios shell plist

我编写了shell脚本,它从plist中读取数组。

PLIST_PATH="./../Documentation/documentation.plist"
echo "PATH = $PLIST_PATH"
FILE_ARRAY=`/usr/libexec/PlistBuddy -c "print :'public-headers'" $PLIST_PATH`

现在我想从这个数组中检索所有字符串,但是我无法从这个数组中获取数据。

请帮忙。

2 个答案:

答案 0 :(得分:1)

命令中的任何数组都将返回一个表单数组 -

Array {
    1
    2
}

sed将删除第一行和最后一行,所以使用此 -

declare -a FILE_ARRAY =($(/usr/libexec/PlistBuddy -c "print :'public-headers'" $PLIST_PATH | sed -e 1d -e '$d'))

您将获得1 2,您在FILE_ARRAY

中声明为数组

您可以访问 - ${FILE_ARRAY[1]}

此类数组的长度为 - echo ${#FILE_ARRAY[@]}

Source of the answer

答案 1 :(得分:1)

安全的方法是使用各个索引的单独Print语句遍历数组,直到不再找到键为止。 下面的脚本在给定的数组键和plist中打印条目数

PLISTBUDDY="/usr/libexec/PlistBuddy -c"
if [ "$#" -ne 2 ]; then
  echo "usage: $0 <array key> <plistfile>"
  exit 1
fi
KEY=$1
PLIST=$2
i=0
while true ; do
   $PLISTBUDDY "Print :$KEY:$i" "$PLIST" >/dev/null 2>/dev/null
   if [ $? -ne 0 ]; then
      echo $i
      break
   fi
   i=$(($i + 1))
done