私のGolang CLIツールの入力文字列には、bash構文($VAR
および${VAR}
)で環境変数への参照がいくつかあります。例:
$HOME/somedir/${SOME_VARIABLE}dir/anotherdir-${ANOTHER_VARIABLE}
環境変数の参照を実際の値で置き換えることによってこの文字列を補間する最も効率的な方法は何ですか?前の例の場合、次のようになります。
/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
}
しかし、このコードは${}
変数を処理しません。
os.ExpandEnvを使用します。
s := os.ExpandEnv(
"$HOME/somedir/${SOME_VARIABLE}dir/anotherdir-${ANOTHER_VARIABLE}")
値が環境変数から取得されない場合は、os.Expandを使用できます。
m := map[string]string{
"HOME": "/home/user",
"SOME_VARIABLE": "4",
"ANOTHER_VARIABLE": "5",
}
s := os.Expand(
"$HOME/somedir/${SOME_VARIABLE}dir/anotherdir-${ANOTHER_VARIABLE}",
func(s string) string { return m[s] })
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加