2 回答

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超10個(gè)贊
代替
cmd := exec.Command("echo", "$TESTVAR")
和
cmd := exec.Command("sh", "-c", "echo $TESTVAR")

TA貢獻(xiàn)1839條經(jīng)驗(yàn) 獲得超15個(gè)贊
Bash 和其他 shell 解釋和擴(kuò)展變量,但應(yīng)用程序不執(zhí)行 Bash。
應(yīng)用程序正在執(zhí)行 echo 命令。與大多數(shù)其他命令一樣,echo 命令不會(huì)在其參數(shù)中擴(kuò)展環(huán)境變量。
您可以按照另一個(gè)答案中所示運(yùn)行 Bash,也可以自行擴(kuò)展環(huán)境變量。以下是使用os.Expand函數(shù)執(zhí)行此操作的方法:
func newCommandEnv(env []string, cmd string, args ...string) *exec.Cmd {
? ? m := map[string]string{}
? ? for _, e := range env {
? ? ? ? if i := strings.Index(e, "="); i >= 0 {
? ? ? ? ? ? m[e[:i]] = e[i+1:]
? ? ? ? }
? ? }
? ? fn := func(placeholder string) string {
? ? ? ? return m[placeholder]
? ? }
? ? for i, a := range args {
? ? ? ? args[i] = os.Expand(a, fn)
? ? }
? ? fmt.Println(args)
? ? c := exec.Command(cmd, args...)
? ? c.Env = env
? ? return c
}
- 2 回答
- 0 關(guān)注
- 208 瀏覽
添加回答
舉報(bào)