我编写了shell脚本,它从plist中读取数组。
PLIST_PATH="./../Documentation/documentation.plist"
echo "PATH = $PLIST_PATH"
FILE_ARRAY=`/usr/libexec/PlistBuddy -c "print :'public-headers'" $PLIST_PATH`
现在我想从这个数组中检索所有字符串,但是我无法从这个数组中获取数据。
请帮忙。
答案 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[@]}
答案 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