2016-12-05 45 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

點:

  • _是一個有效的變量組成的性格,所以當提到一個變量,你需要{}包圍它時,另一個有效的變量組成的字符立即之前或之後

  • 除非絕對必要,否則不要將所有大寫字母用於用戶定義的變量,以防止可能與環境變量混淆