簡體   English   中英

用灰燼從字符串中獲取環境變量

[英]Get enviroment variable from string with ash

考慮以下:

/ # 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

如果我對ash嘗試相同,則會收到以下錯誤:

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

我在一個高山容器中運行,並且作為一種解決方法,我正在下載bash並使用它。 但要避免在我的Docker映像上出現額外的大小。

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM