我在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,即/home/slavik/project/build xxx
或/home/slavik/project/build -v=1
Go程序引发了像file /home/slavik/project/build not found
我的代码出了什么问题?
答案 0 :(得分:9)
你必须分别传递程序和参数。请参阅exec.Command的签名:
func Command(name string, arg ...string) *Cmd
所以,如果你想通过,例如-v=1
,您的电话可能应该类似于:
dateCmd := exec.Command(pwd + "/build", "-v=1")
答案 1 :(得分:4)
使用
exec.Command(pwd + "/build", fileName)