Получить массив значений с помощью plistBuddy

var="keychain-access-groups"
declare -a val=$( /usr/libexec/PlistBuddy -c "Print $var" "sample.plist")
echo ${val}
echo ${val[0]}

Ouput:

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, вы должны окружить $(...) подоболочка с другим (...), как это:

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

После этого вы можете получить доступ к первому значению с помощью ${val[0]} и второе значение с ${val[1]},

Другие вопросы по тегам