Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 在shell脚本中计算数组中的变量_Bash_Shell - Fatal编程技术网

Bash 在shell脚本中计算数组中的变量

Bash 在shell脚本中计算数组中的变量,bash,shell,Bash,Shell,我试图通过shell脚本读取Xcode构建设置,即,如果存在名为PRODUCT_NAME的构建设置,我将通过在shell脚本中写入echo${PRODUCT_NAME}来读取其值 现在,我在一个数组中得到这个产品的名称,让我们调用只有一个元素产品名称的myArr。我在数组上循环 for i in "${myarr[@]}" do : echo $i done echo$i只需输出产品名称即可。但是,我想写一些东西来计算${PRODUCT_NAME}并给出结果 我也尝试过eval ec

我试图通过shell脚本读取Xcode构建设置,即,如果存在名为PRODUCT_NAME的构建设置,我将通过在shell脚本中写入
echo${PRODUCT_NAME}
来读取其值

现在,我在一个数组中得到这个产品的名称,让我们调用只有一个元素产品名称的myArr。我在数组上循环

for i in "${myarr[@]}"
do
:
    echo $i 
done
echo$i
只需输出产品名称即可。但是,我想写一些东西来计算${PRODUCT_NAME}并给出结果

我也尝试过
eval echo$I
,但也只输出产品名称

通过使用


回声“${!i}”


第二行给出所需的输出。我从这里得到了这个答案:

当我解释您的问题时,您持有变量数组,在遍历时,您希望使用变量的实际值

我尝试了下面的代码,它几乎与您编写的代码相似,并且似乎可以工作

#!/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
输出:

产品属性:日历

产品性质:2.3


PRODUCT_属性:Sam

您不需要
eval
,甚至不需要临时变量。只需使用
echo${!myarr[0]}
。实际上,
echo“${!i}”
是循环中所需的全部内容。数组是位置的(数字索引)还是关联的(文本键)?数组是位置的。