我正处于尝试执行 shell 命令的情况,但它的参数被正确解释为环境变量。
例如,当我在终端中输入以下内容时
ls $GOPATH
Bash 解释并扩展变量$GOPATH,并列出目录的内容$GOPATH。我正在尝试对 Golang 的程序化 shell 执行做类似的事情。
我有以下代码。
package main
import (
"bytes"
"fmt"
"log"
"os"
"os/exec"
)
func main() {
cmd := exec.Command("echo", "$TESTVAR")
cmd.Env = append(os.Environ(),
"TESTVAR=this_is_a_test",
)
var outBuff bytes.Buffer
var errBuff bytes.Buffer
cmd.Stdout = &outBuff
cmd.Stderr = &errBuff
if err := cmd.Run(); err != nil {
log.Fatal(err)
}
fmt.Println(outBuff.String()) // empty
fmt.Println(errBuff.String()) // empty
}
这个程序输出
$ go run test.go
$TESTVAR
有谁知道如何使 exec 库将 $TESTVAR 解释为环境变量而不是字符串文字?提前致谢!
至尊宝的传说
紫衣仙女
相关分类