read array from plist through shell script plist b

2019-05-09 07:48发布

I have written shell script which reads array from plist.

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

Now I want to retrieve all the strings from this array but i am not able to get count from this array.

please help.

标签: ios shell plist
2条回答
SAY GOODBYE
2楼-- · 2019-05-09 08:39

Any array from your command will return an array of the form -

Array {
    1
    2
}

sed will remove first and last line, so with this -

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

you will get 1 2, which you are declaring as an array in FILE_ARRAY

which you can access as - ${FILE_ARRAY[1]}

Length of such array will be - echo ${#FILE_ARRAY[@]}

Source of the answer

查看更多
兄弟一词,经得起流年.
3楼-- · 2019-05-09 08:46

The safe way is to iterate thru the array with individual Print statements for the indexes until no key is found anymore. The script below prints the number of entries in the given array key and 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
查看更多
登录 后发表回答