いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

Goメモ-389 (環境変数周りのメモ-4)(os.ExpandEnv, 文字列中の ${var} または $var を置換)

関連記事

GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ

概要

以下、自分用のメモです。

環境変数を扱うときは結構あるのですが、いつも godotenv とかで済ませているので、標準ライブラリを使ったやり方をよく忘れてしまっているので、ここに自分用にメモを残しておくことにしました。どんなプログラム言語でも標準ライブラリをしっかりと理解して扱えることが大事。

今回はos.ExpandEnv 。現在の環境変数の値に従って、文字列中の ${var} または $var を置き換えます。未定義の変数への参照は空文字列に置き換えられます。

サンプル

package osop

import (
    "os"

    "github.com/devlights/gomy/output"
)

// ExpandEnv は、os.ExpandEnv() のサンプルです。
//
// ExpandEnv は、現在の環境変数の値に従って、文字列中の ${var} または $var を置き換えます。
// 未定義の変数への参照は空文字列に置き換えられます。
//
// 戻り値は string で、error は返らない。
//
// # REFERENCES
//
//   - https://pkg.go.dev/os@go1.22.0#ExpandEnv
func ExpandEnv() error {
    var (
        env1 = os.ExpandEnv("${HOME}")       // ${VAL}形式
        env2 = os.ExpandEnv("$SONZAISHINAI") // $VAL形式
        env3 = os.ExpandEnv("home is ${HOME}, hostname is ${HOSTNAME}")
    )

    output.Stdoutf("[env1]", "%q\n", env1)
    output.Stdoutf("[env2]", "%q\n", env2)
    output.Stdoutf("[env3]", "%q\n", env3)

    return nil

    /*
      $ task
      task: [build] go build .
      task: [run] ./try-golang -onetime

      ENTER EXAMPLE NAME: osop_expandenv

      [Name] "osop_expandenv"
      [env1]               "/home/gitpod"
      [env2]               ""
      [env3]               "home is /home/gitpod, hostname is devlights-trygolang-96ahwfwl0rp"


      [Elapsed] 33.6µs
   */

}

参考情報

Goのおすすめ書籍


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。