首頁 >後端開發 >Golang >在 Go 中執行動態系統指令時,可變參數如何解決「找不到執行檔」錯誤?

在 Go 中執行動態系統指令時,可變參數如何解決「找不到執行檔」錯誤?

Patricia Arquette
Patricia Arquette原創
2024-12-08 13:31:11773瀏覽

How Can Variadic Arguments Solve

利用可變參數進行動態指令執行

在系統指令的參數數量未知的情況下,使用分割使用可變參數的-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 的可變參數功能,以三個點「...」表示。它的工作原理如下:

  1. 分割命令:命令字串被分割為頭部(第一個單詞,例如“g”)和部分(剩餘的參數) .
  2. 重建指令: 然後將head 作為第一個參數傳遞給exec.Command()。其餘部分自動作為可變參數傳遞,有效地使用其原始參數建立完整的命令。
  3. 執行命令:執行構造的命令,並處理輸出或任何錯誤

透過使用可變參數,該解決方案提供了使用不同數量的參數執行系統命令的靈活性,這使得它在以下情況下特別有價值:命令是動態產生的。

以上是在 Go 中執行動態系統指令時,可變參數如何解決「找不到執行檔」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn