У меня есть строка ввода для моего инструмента Golang CLI с некоторыми ссылками на переменные среды в синтаксисе bash ($VAR
и ${VAR}
), например ::
$HOME/somedir/${SOME_VARIABLE}dir/anotherdir-${ANOTHER_VARIABLE}
Каков наиболее эффективный способ интерполировать эту строку, заменяя ссылки на переменные environemnt фактическими значениями?
Для предыдущего примера это может быть:
/home/user/somedir/4dir/anotherdir-5
если HOME=/home/user
, SOME_VARIABLE=4
и ANOTHER_VARIABLE=5
.
Сейчас я использую что-то вроде:
func interpolate(str string) string {
for _, e := range os.Environ() {
parts := strings.SplitN(e, "=", 2)
name, value := parts[0], parts[1]
str = strings.Replace(str, "$" + name, value, -1)
}
return str
}
но этот код не обрабатывает ${}
переменных.