首页 >后端开发 >Golang >如何在Go中正确执行多字系统命令?

如何在Go中正确执行多字系统命令?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-13 04:37:20633浏览

How Can I Correctly Execute Multi-Word System Commands in Go?

克服系统命令执行中的参数歧义

在此场景中,您的目标是执行类似于将内容附加到文件的系统命令。但是,当命令超过单个单词时,您的程序会遇到错误。

识别问题
初始代码尝试直接执行命令,无法区分命令和命令它的论点。当命令包含多个单词时,这是有问题的。

解决方案
解决此问题的一种方法是利用 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn