从带有

时间:2016-03-14 18:18:14

标签: bash environment-variables 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并使用它。但是想避免我的码头图像上的额外尺寸。

1 个答案:

答案 0 :(得分:3)

ash中执行此操作的唯一方法是使用eval。但是,您应该验证您要评估的内容仅包含 有效的shell标识符,以避免从不受信任的值执行非预期的代码。例如,

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