我在执行Go程序中的shell命令时遇到了一些麻烦:

  var command = pwd + "/build " + file_name

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

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

我的代码有什么问题?

最佳答案

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

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

所以如果你想通过-v=1,您的调用可能应该类似于:
dateCmd := exec.Command(pwd + "/build", "-v=1")

关于bash - 如何执行shell命令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17009039/

10-15 01:22