利用可變參數進行動態指令執行
在系統指令的參數數量未知的情況下,使用分割使用可變參數的-and-assemble 方法提供了一個優雅的解決方案。
如所提供的程式碼所觀察到的,嘗試執行具有多個參數的複雜指令會遇到「找不到執行檔」之類的錯誤。這是因為程式碼假定為單字指令,而沒有單獨指定參數。
要克服此限制,請考慮以下解決方案:
func exeCmd(cmd string, wg *sync.WaitGroup) { fmt.Println("command is ", cmd) // Split command into head (e.g., 'g++') and parts (remaining arguments) parts := strings.Fields(cmd) head := parts[0] parts = parts[1:] out, err := exec.Command(head, parts...).Output() if err != nil { fmt.Printf("%s", err) } fmt.Printf("%s", out) wg.Done() }
此更新的程式碼使用 Go 的可變參數功能,以三個點「...」表示。它的工作原理如下:
透過使用可變參數,該解決方案提供了使用不同數量的參數執行系統命令的靈活性,這使得它在以下情況下特別有價值:命令是動態產生的。
以上是在 Go 中執行動態系統指令時,可變參數如何解決「找不到執行檔」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!