解决具有可变参数的系统命令的执行
在许多场景中,经常会遇到需要可变数量参数的系统命令。然而,在尝试执行基本单字命令之外的命令时,在简单的脚本中执行此类命令可能会带来挑战。
在前面提供的示例 Go 脚本中,尝试执行 echo newline >> 之类的命令。 foo.o 导致错误,表明脚本无法识别命令。这可能是由于执行过程中命令与其参数之间缺乏分离。
使用“sh”颠覆问题
找到了一种绕过的解决方案这个限制涉及到sh(shell)命令的使用:
out, err := exec.Command("sh", "-c", cmd).Output()
简单高效方法
利用 Go 的可变参数支持的更好替代方案如下:
func exeCmd(cmd string, wg *sync.WaitGroup) { // Split command into head and parts parts := strings.Fields(cmd) head := parts[0] parts = parts[1:len(parts)] out, err := exec.Command(head, parts...).Output() if err != nil { fmt.Printf("%s", err) } fmt.Printf("%s", out) }
此解决方案利用 Go 中的可变参数,允许您传递可变数量的命令的参数。 head 变量代表命令本身,而 parts 则保存其余参数。通过利用可变参数,消除了对 sh 等外部命令的需求,从而实现更高效、更直接的执行过程。
以上是Go中如何高效执行带有可变参数的系统命令?的详细内容。更多信息请关注PHP中文网其他相关文章!