解決具有可變參數的系統命令的執行
在許多場景中,經常會遇到需要可變數量參數的系統命令。然而,在嘗試執行基本單字命令以外的命令時,在簡單的腳本中執行此類命令可能會帶來挑戰。
在前面提供的範例 Go 腳本中,嘗試執行 echo newline >> 之類的指令。 foo.o 導致錯誤,表示腳本無法辨識指令。這可能是由於執行過程中命令與其參數之間缺乏分離。
使用「sh」顛覆問題
找到了一種繞過的解決方案這個限制涉及到sh(shell)命令的使用:
out, err := exec.Command("sh", "-c", cmd).Output()
簡單高效方法
利用Go的可變參數支援的更好替代方案如下:
func exeCmd(cmd string, wg *sync.WaitGroup) { // Split command into head and parts 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) }
此解決方案利用 Go 中的可變參數,允許您傳遞可變數量的命令的參數。 head 變數代表指令本身,而 parts 則保存其餘參數。透過利用可變參數,消除了對 sh 等外部命令的需求,從而實現更有效率、更直接的執行過程。
以上是Go中如何有效率地執行帶有可變參數的系統指令?的詳細內容。更多資訊請關注PHP中文網其他相關文章!