Получить переменную окружения из строки с пеплом

Учтите следующее:

/ # 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
Другие вопросы по тегам