使用可變參數執行系統指令
在某些情況下,使用未知數量的參數執行系統指令可能會帶來挑戰。雖然“ls”或“date”等單字命令可以無縫工作,但更複雜的命令可能會導致程式失敗。本文探討了解決此問題的解決方案。
Go 的 os/exec 套件提供了 Command() 函數,該函數將命令字串作為輸入。但是,如果命令包含多個單字或參數,則會導致錯誤。
要執行此類命令,另一種方法是使用 sh 命令。透過呼叫 exec.Command("sh", "-c", cmd),shell 用於執行指定的命令,允許使用任意數量的參數執行複雜的命令。
此外,還有一種更簡單的方法是利用 Go 中的可變參數功能。透過定義一個接受可變數量參數的函數並將它們指派給字串切片,可以如下執行該指令:
func exeCmd(cmd string, wg *sync.WaitGroup) { fmt.Println("command is ", cmd) 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) wg.Done() // Signal completion to waitgroup }
透過利用可變參數,您可以傳遞可變數量的參數到命令,方便執行複雜的系統命令而不會遇到上述問題。
以上是如何在 Go 中執行具有可變數量參數的系統命令?的詳細內容。更多資訊請關注PHP中文網其他相關文章!