2 回答

TA貢獻(xiàn)2021條經(jīng)驗(yàn) 獲得超8個贊
OK,這是一個比較復(fù)雜一點(diǎn)比你預(yù)期,但有是一個解決方案:
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)
}
不幸的是,盡管在 2011 年添加了對此的支持,但似乎尚未將其納入文檔。(雖然也許我只是不知道在哪里看。)

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超2個贊
僅供參考,運(yùn)行:
package main
import (
"fmt"
"os/exec"
)
func main() {
cmd := exec.Command("find", `"SomeText"`)
fmt.Printf("Path: %q, args[1]: %q\n", cmd.Path, cmd.Args[1])
}
playground
在 unix 上給出:
Path: "/usr/bin/find", args[1]: "\"SomeText\""
并交叉編譯到 Windows 并在 Win7 上運(yùn)行給出:
Path: "C:\\Windows\\system32\\find.exe", args[1]: "\"SomeText\""
兩者在我看來都是正確的。
添加out, err := cmd.Output()到 Windows 交叉編譯為以下內(nèi)容提供fmt.Printf("%#v\%v\n", err, err):
&exec.ExitError{ProcessState:(*os.ProcessState)(0xc0820046a0)}
exit status 1
但我想那只是因?yàn)?find 找不到任何東西。
- 2 回答
- 0 關(guān)注
- 254 瀏覽
添加回答
舉報(bào)