Rumah >pembangunan bahagian belakang >Golang >Mengapa Kod My Go Gagal Melaksanakan Perintah `top` dengan Argumen Tertentu Walaupun Perintah Yang Sama Berfungsi daripada Konsol?
Memanggil Perintah dengan Beberapa Argumen Berfungsi tetapi Tidak dengan Yang Lain Walaupun Berjaya daripada Konsol
Coretan kod ini mengeluarkan butiran 10 proses menggunakan arahan / usr/bin/top dengan hujah -n 10 dan -l 2:
package main import ( "os/exec" ) func main() { print(top()) } func top() string { app := "/usr/bin/top" cmd := exec.Command(app, "-n 10", "-l 2") out, err := cmd.CombinedOutput() if err != nil { return err.Error() + " " + string(out) } value := string(out) return value }
Walau bagaimanapun, menambah argumen cpu -o (cth., cmd := exec.Command(app, "-o cpu", "-n 10", "-l 2")) mengakibatkan ralat:
exit status 1 invalid argument -o: cpu /usr/bin/top usage: /usr/bin/top [-a | -d | -e | -c <mode>] [-F | -f] [-h] [-i <interval>] [-l <samples>] [-ncols <columns>] [-o <key>] [-O <secondaryKey>] [-R | -r] [-S] [-s <delay>] [-n <nprocs>] [-stats <key(s)>] [-pid <processid>] [-user <username>] [-U <username>] [-u]
Menariknya, arahan top -o cpu -n 10 -l 2 berfungsi dengan baik daripada konsol dalam OS X 10.9.3.
Isu timbul daripada cara hujah dipisahkan dalam kod Go. Baris berikut:
cmd := exec.Command(app, "-o cpu", "-n 10", "-l 2")
sama dengan menggunakan arahan atas "-o cpu" "-n 10" "-l 2" dalam shell. Kebanyakan arahan menghuraikan hujah dalam format ini dengan ketat. Oleh itu, bahagian atas memisahkan cpu -o sebagai pilihan pertama, meninggalkan yang lain sebagai hujahnya. Ini berfungsi untuk argumen berangka tetapi gagal apabila mencari medan bernama " cpu", menyebabkan ralat.
Untuk menyelesaikan masalah ini, pisahkan argumen seperti berikut:
cmd := exec.Command(app, "-o", "cpu", "-n", "10", "-l", "2")
Atas ialah kandungan terperinci Mengapa Kod My Go Gagal Melaksanakan Perintah `top` dengan Argumen Tertentu Walaupun Perintah Yang Sama Berfungsi daripada Konsol?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!