在 Windows 的 Exec 包中执行带有双引号参数的命令
使用 exec 包执行命令在处理双引号时需要特别注意争论,尤其是在 Windows 环境中。本文深入研究了涉及 find 命令的特殊问题,并提供了正确执行该命令的解决方案。
尝试执行如下命令时会出现问题:
out, err := exec.Command("find", `"SomeText"`).Output()
在 Windows 上,此由于双引号导致命令失败,导致参数被转义为:
find /SomeText"
要解决此问题,需要更复杂的方法,如以下代码所示:
<code class="go">package main import ( "fmt" "os/exec" "syscall" ) func main() { cmd := exec.Command(`find`) cmd.SysProcAttr = &syscall.SysProcAttr{} cmd.SysProcAttr.CmdLine = `find "SomeText" test.txt` out, err := cmd.Output() fmt.Printf("%s\n", out) fmt.Printf("%v\n", err) }</code>
在这段代码中,我们:
这种方法允许我们按预期使用双引号参数执行 find 命令。然而,值得注意的是,Go 文档中没有明确记录此行为,这表明它可能不是一个广为人知的功能。
以上是如何在 Windows 上的 Go 的 Exec 包中执行带双引号参数的命令?的详细内容。更多信息请关注PHP中文网其他相关文章!