在此场景中,您的目标是执行类似于将内容附加到文件的系统命令。但是,当命令超过单个单词时,您的程序会遇到错误。
识别问题
初始代码尝试直接执行命令,无法区分命令和命令它的论点。当命令包含多个单词时,这是有问题的。
解决方案
解决此问题的一种方法是利用 Shell 作为中介,如建议的解决方案所示:
out, err := exec.Command("sh", "-c", cmd).Output()
-c 标志指示 Shell 将 cmd 解释为命令,允许程序指定命令及其参数
替代且高效的方法
一种更高效、更直接的方法利用 Go 的可变参数:
func exeCmd(cmd string, wg *sync.WaitGroup) { parts := strings.Fields(cmd) head := parts[0] parts = parts[1:len(parts)] out, err := exec.Command(head, parts...).Output() }
在这种方法中,命令被分为它的头(主要命令)和包含其余参数的切片。然后头部和部分作为参数传递给 exec.Command。
以上是如何在Go中正确执行多字系统命令?的详细内容。更多信息请关注PHP中文网其他相关文章!