當在Windows 上使用exec 套件執行帶有雙引號參數的命令時,Windows 可能會解釋引號標記為命令而不是分隔符號。這可能會導致意外的行為和錯誤。
例如,以下程式碼片段嘗試使用雙引號參數執行find 指令:
out, err := exec.Command("find", `"SomeText"`).Output()
但是,在Windows 上,此將導致執行以下指令:
find /SomeText"
引號被解釋為指令的一部分,而不是分隔參數。
要解決此問題並正確執行查找使用exec 套件在Windows 上執行命令,可以使用以下方法:
<code class="go">package main import ( "fmt" "os" "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>
在此程式碼中,SysProcAttr 欄位用於明確設定進程的命令行。透過設定 CmdLine 欄位來尋找「SomeText」test.txt,命令將在雙引號參數完好無損的情況下執行。
這種方法允許將雙引號參數正確傳遞給命令,從而導致想要在 Windows 上執行。
以上是如何使用 exec 套件在 Windows 上執行帶有雙引號參數的命令?的詳細內容。更多資訊請關注PHP中文網其他相關文章!