0

I am trying to read Xcode build settings via shell script, i.e. if there is a build setting called PRODUCT_NAME, I read its value by writing echo ${PRODUCT_NAME} in shell script.

Now, I get this PRODUCT_NAME in an array, lets call myArr having just one element PRODUCT_NAME. I loop over that array as

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

echo $i would simply output PRODUCT_NAME. However, I want to write something that would evaluate ${PRODUCT_NAME} and give me results.

I have also tried eval echo $i but that also outputs PRODUCT_NAME only

prabodhprakash
  • 3,825
  • 24
  • 48

2 Answers2

-1

Solved it by using

echo "${!i}"

The second line gives the output as desired. I have taken this answer from here: How to get a variable value if variable name is stored as string?

Community
  • 1
  • 1
prabodhprakash
  • 3,825
  • 24
  • 48
-1

As I interpret your problem, You hold the array of variables, and while traversing, you want to use the actual values of the variables.

I tried the below code which is almost similar to which you have written and seems working.

#!/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

Output:

PRODUCT_PROPERTY: Calendar

PRODUCT_PROPERTY: 2.3

PRODUCT_PROPERTY: Sam

Prakash
  • 163
  • 8