Melaksanakan Perintah Sistem dengan Argumen Pembolehubah
Apabila melaksanakan perintah sistem yang melibatkan berbilang argumen, perintah itu perlu dipisahkan daripada argumen. Kod di bawah menggambarkan konsep ini:
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() }
Dalam kod ini:
Menggunakan pendekatan ini, atur cara boleh melaksanakan perintah sistem dengan bilangan argumen yang sewenang-wenangnya. Ia mengatasi had kod asal, yang gagal untuk arahan dengan berbilang perkataan.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Perintah Sistem dengan Selamat dengan Argumen Pembolehubah dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!