2016-11-06 1 views
0

Я пытаюсь прочитать настройки сборки Xcode с помощью сценария оболочки, то есть если есть параметр сборки PRODUCT_NAME, я прочитал его значение, написав echo ${PRODUCT_NAME} в сценарии оболочки.Оценка переменной, которая поступает в массив в сценарии оболочки

Теперь я получаю этот PRODUCT_NAME в массиве, разрешает вызов myArr только с одним элементом PRODUCT_NAME. Я цикл по этому массиву, как

for i in "${myarr[@]}" 
do 
: 
    echo $i 
done 

echo $i просто выходной PRODUCT_NAME. Однако я хочу написать что-то, что будет оценивать $ {PRODUCT_NAME} и дать мне результаты.

Я также попытался eval echo $i но также выводит PRODUCT_NAME только

+0

ли массив позиционные (числовые индексы) или ассоциативным (текстовые ключи)? – cdarke

+0

массив позиционный. – prabodhprakash

ответ

-1

решаемые его с помощью

echo "${!i}"

Вторая строка дает выход по желанию. Я принял этот ответ отсюда: How to get a variable value if variable name is stored as string?

+3

Вам не нужна «eval» или даже временная переменная. Просто используйте 'echo $ {! Myarr [0]}'. – chepner

+1

Фактически, 'echo '$ {! I}" 'все, что вам нужно в цикле. – sorontar

-1

Поскольку я интерпретирую вашу проблему, вы удерживаете массив переменных, а при перемещении вы хотите использовать фактические значения переменных.

Я пробовал приведенный ниже код, который почти аналогичен написанному вами и кажется рабочим.

#!/bin/bash 

PRODUCT_NAME="Calendar" 
PROCUCT_VER="2.3" 
PROCUCT_OWNER="Sam" 

PRODUCT_DETAILS=($PRODUCT_NAME $PROCUCT_VER $PROCUCT_OWNER) 

for PRODUCT_PROPERTY in "${PRODUCT_DETAILS[@]}" 
do 
    echo "PRODUCT_PROPERTY: $PRODUCT_PROPERTY" 
done 

Выход:

PRODUCT_PROPERTY: Календарь

PRODUCT_PROPERTY: 2,3

PRODUCT_PROPERTY: Сэм

Смежные вопросы