1

我在从 Go 程序执行 shell 命令时遇到了一些问题:

  var command = pwd + "/build " + file_name

  dateCmd := exec.Command(string(command))
  dateOut, err := dateCmd.Output()
  check(err)

如果command变量等于单个单词,例如/home/slavik/project/build(构建是 shell 脚本)它可以工作,但是如果我尝试传递一些 arg ie/home/slavik/project/build xxx或者/home/slavik/project/build -v=1Go 程序引发异常,例如file /home/slavik/project/build not found

我的代码有什么问题?

4

2 回答 2

9

您必须分别传递程序和参数。查看exec.Command的签名:

func Command(name string, arg ...string) *Cmd

所以如果你想通过 eg -v=1,你的电话可能应该是这样的:

dateCmd := exec.Command(pwd + "/build", "-v=1")
于 2013-06-09T11:28:44.750 回答
4

利用

exec.Command(pwd + "/build", fileName)
于 2013-06-09T11:29:57.550 回答