2016-03-14 74 views
0

考慮以下幾點:獲取環境變量與灰

/ # echo $TEMPLATEGO_SERVICE_HOST 
192.168.1.1 
/# export string="TEMPLATEGO_SERVICE_HOST" 
/# echo $string 
TEMPLATEGO_SERVICE_HOST 

使用bash我可以這樣做:

/ echo ${!string} 
192.168.1.1 

如果我嘗試用灰一樣,我收到以下錯誤:

/ # echo ${!string} 
ash: syntax error: bad substitution 

我在一個高山容器內運行,作爲一種解決方法,我正在下載bash並使用它。但想要避免我的碼頭圖像上的額外大小。

回答

3

ash中執行此操作的唯一方法是使用eval。但是,您應該驗證您要評估的內容是否僅包含有效的shell標識符,以避免從不可信值執行意外代碼。例如,

if echo "$string" | grep -q '^[a-zA-Z_][a-zA-Z0-9_]*$' "$string"; then 
    eval echo \$$string 
fi