如何使用Golang在特定文件夹中运行shell命令?

时间:2017-03-31 08:23:28

标签: go

我可以使用此out, err := exec.Command("git", "log").Output()来获取命令的输出,该输出将在与可执行位置相同的路径中运行。

如何指定我想在哪个文件夹中运行命令?

1 个答案:

答案 0 :(得分:41)

exec.Command()会返回*exec.Cmd类型的值。 Cmd是一个结构,并且有一个Dir字段:

// Dir specifies the working directory of the command.
// If Dir is the empty string, Run runs the command in the
// calling process's current directory.
Dir string

所以只需在调用Cmd.Output()之前设置它:

cmd:= exec.Command("git", "log")
cmd.Dir = "your/intended/working/directory"
out, err := cmd.Output()

另请注意,这是git命令特有的; git允许您使用-C标记传递路径,因此您也可以按照以下方式执行操作:

out, err := exec.Command("git", "-C", "your/intended/working/directory", "log").
    Output()