Получить переменную окружения из строки с пеплом
Учтите следующее:
/ # 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 и использую его. Но хочу избежать лишнего размера на моем изображении докера.
1 ответ
Решение
Единственный способ сделать это в ash
это использовать eval
, Однако вы должны убедиться, что то, что вы пытаетесь оценить, состоит только из действительного идентификатора оболочки, чтобы избежать выполнения непреднамеренного кода из ненадежного значения. Например,
if echo "$string" | grep -q '^[a-zA-Z_][a-zA-Z0-9_]*$' "$string"; then
eval echo \$$string
fi