2016-12-05 92 views
2

我有以下情况。检索shell中变量的值

#!/bin/bash 
export avalue_name="stack" 
LOOPERS=${LOOPERS:-avalue} 
for LOOPER in $(echo "$LOOPERS" | tr ',' "\n") 
do 
    actualVar="$LOOPER""_name" 
    echo "actualVar - $actualVar" 
done 

输出是

actualVar - avalue_name 

我所要的输出是

actualVar - stack 

我会怎么做呢?

我试过$($LOOPER_name)。它也不起作用。

+1

你在哪里声明'$ LOOPER_name'?请看看:http://www.shellcheck.net/ – Cyrus

+0

我更新了有问题的脚本。 – sattu

回答

3

两种方法:


使用一个中间变量,并使用对外壳间接引用:

$ avalue_name="stack" 

$ LOOPER=avalue 

$ temp="${LOOPER}_name" 

$ echo "${!temp}" 
stack 

或者使用eval不建议

​​3210

点:

  • _是一个有效的变量组成的性格,所以当提到一个变量,你需要{}包围它时,另一个有效的变量组成的字符立即之前或之后

  • 除非绝对必要,否则不要将所有大写字母用于用户定义的变量,以防止可能与环境变量混淆