如何在 Go 中从多个不同的文件位置执行脚本



我目前正在使用脚本为每个测试加载和拆卸MongoDB测试数据库。 我这样做如下:

func LoadDB() {
cmd := exec.Command("../scripts/load_db.py")
}

我从每个测试中调用此函数的位置。 问题是某些测试文件比其他测试文件更进一步地从此脚本中删除:

+ service1
– service1.go
– service1_test.go
+ service2
+ sub
– subservice2.go
– subservice2_test.go
– service2.go
– service2_test.go

问题是工作目录从我调用函数执行脚本的任何地方更改,因此相对导入不起作用。 我不想使用绝对路径,因为此代码可能位于不同的计算机上。 能够从多个不同位置调用同一脚本的好解决方案是什么?

在每台计算机上定义设置load_db.py脚本绝对路径的环境变量怎么样?

然后在LoadDB()func 中,您可以使用os包中的Getenv()func 获取环境变量。

https://golang.org/pkg/os/#Getenv

func LoadDB() {
path := os.Getenv("LOAD_DB_PATH") // /absolute/path/to/script
cmd := exec.Command(path)
}

最新更新