2017-06-22 76 views
1

我宣布一个变量IS_abc=false,在某些条件下,我改变值基础上IS_abc=true变量替换

IS_abc=false 
declare -a my_arr 
my_arr = ('abc' 'pqr' 'xyz') 
.... 
.... // some operation 
IS_abc=true 
for i in "${my_arr[@]}" 
do 
    //here i want to access value of $IS_abc as true 
    //how to do this 
done 

我曾尝试使用$IS_'$i'访问,但它提高误差无效替代

如果我在这里做错了什么,告诉我吗?

回答

4

您可以使用间接VAR参考:

my_arr=('abc' 'pqr' 'xyz') 
IS_abc=true 

var="IS_${my_arr[0]}" 
echo "${!var}" 

输出:

true 
+0

是的,我使用'VAR = “芸,$ I”' – Sanket

+0

是什么的''做' “$ {!VAR}”'? – pikand

+2

这就是所谓的*间接扩展*。这将扩展为由参数引用的变量的名称。所以它打印出'IS_abc'变量的值。 – anubhava

1

我做这样的:

value=`eval echo \\${IS_${i}}` 

有可能是一个更好的办法,但这应该工作。