利用可变参数进行动态命令执行
在系统命令的参数数量未知的情况下,使用拆分使用可变参数的 -and-assemble 方法提供了一个优雅的解决方案。
正如所提供的代码中所观察到的,尝试执行具有多个参数的复杂命令会遇到“找不到可执行文件”之类的错误。这是因为代码假定为单字命令,而没有单独指定参数。
要克服此限制,请考虑以下解决方案:
func exeCmd(cmd string, wg *sync.WaitGroup) { fmt.Println("command is ", cmd) // Split command into head (e.g., 'g++') and parts (remaining arguments) parts := strings.Fields(cmd) head := parts[0] parts = parts[1:] out, err := exec.Command(head, parts...).Output() if err != nil { fmt.Printf("%s", err) } fmt.Printf("%s", out) wg.Done() }
此更新的代码使用 Go 的可变参数功能,用三个点“...”表示。它的工作原理如下:
通过使用可变参数,该解决方案提供了使用不同数量的参数执行系统命令的灵活性,这使得它在以下情况下特别有价值:命令是动态生成的。
以上是在 Go 中执行动态系统命令时,可变参数如何解决'找不到可执行文件”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!