使用可變參數執行系統指令
執行涉及多個參數的系統指令時,有必要將指令與參數分開。下面的程式碼說明了這個概念:
import ( "fmt" "os/exec" "strings" "sync" ) func exeCmd(cmd string, wg *sync.WaitGroup) { fmt.Println("command is ", cmd) // Splitting head (e.g., "g++") from the rest of the command (e.g., "-c file.cpp") 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 to waitgroup that this goroutine is done } func main() { wg := new(sync.WaitGroup) wg.Add(3) x := []string{ "echo newline >> foo.o", "echo newline >> f1.o", "echo newline >> f2.o"} go exeCmd(x[0], wg) go exeCmd(x[1], wg) go exeCmd(x[2], wg) wg.Wait() }
在此程式碼中:
使用此方法,程式可以使用任意數量的參數執行系統指令。它克服了原始程式碼對於多單字命令失敗的限制。
以上是如何在 Go 中安全地執行具有可變參數的系統命令?的詳細內容。更多資訊請關注PHP中文網其他相關文章!