我已经编写了从 plist 读取数组的 shell 脚本。
PLIST_PATH="./../Documentation/documentation.plist"
echo "PATH = $PLIST_PATH"
FILE_ARRAY=`/usr/libexec/PlistBuddy -c "print :'public-headers'" $PLIST_PATH`
Run Code Online (Sandbox Code Playgroud)
现在我想从这个数组中检索所有字符串,但我无法从这个数组中获取计数。
请帮忙。
安全的方法是使用索引的单独 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
Run Code Online (Sandbox Code Playgroud)
命令中的任何数组都将返回以下形式的数组 -
Array {
1
2
}
Run Code Online (Sandbox Code Playgroud)
sed将删除第一行和最后一行,所以这样 -
declare -a FILE_ARRAY =($(/usr/libexec/PlistBuddy -c "print :'public-headers'" $PLIST_PATH | sed -e 1d -e '$d'))
Run Code Online (Sandbox Code Playgroud)
你会得到1 2,你将其声明为数组FILE_ARRAY
您可以通过以下方式访问:${FILE_ARRAY[1]}
该数组的长度为 -echo ${#FILE_ARRAY[@]}