I have an input string for my Golang CLI tool with some references to environment variables in bash syntax ($VAR and ${VAR}), e.g.:
$HOME/somedir/${SOME_VARIABLE}dir/anotherdir-${ANOTHER_VARIABLE}
What is the most efficient way to interpolate this string by replacing environemnt variables references with actual values? For previous example it can be:
/home/user/somedir/4dir/anotherdir-5
if HOME=/home/user, SOME_VARIABLE=4 and ANOTHER_VARIABLE=5.
Right now I'm using something like:
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
}
but this code doesn't handle ${} variables.