请考虑以下事项:
/ # 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并使用它。但是想避免我的码头图像上的额外尺寸。
答案 0 :(得分:3)
在ash
中执行此操作的唯一方法是使用eval
。但是,您应该验证您要评估的内容仅包含 有效的shell标识符,以避免从不受信任的值执行非预期的代码。例如,
if echo "$string" | grep -q '^[a-zA-Z_][a-zA-Z0-9_]*$' "$string"; then
eval echo \$$string
fi