Jalankan Berbilang Perintah Secara Berurutan dalam Cangkang Yang Sama: Analisis dan Penyelesaian
Kod Go yang disediakan bertujuan untuk melaksanakan berbilang arahan secara berurutan, setiap satu dalam contoh shell berasingan sendiri. Walau bagaimanapun, ia menghadapi masalah apabila arahan kedua dan ketiga gagal dengan ralat yang menunjukkan bahawa fail boleh laku tidak wujud. Ini kerana setiap arahan dilaksanakan dalam shell baharu, kehilangan konteks perintah sebelumnya.
Untuk menyelesaikan isu ini, adalah perlu untuk terus melaksanakan semua arahan dalam contoh shell yang sama. Ini boleh dicapai dengan menggunakan pendekatan berikut:
// Run multiple commands in the same shell instance func runCommands(commands []string) error { // Create a pipe for controlling the shell's standard input and output reader, writer, err := os.Pipe() if err != nil { return err } defer reader.Close() defer writer.Close() // Start the shell command cmd := exec.Command("/bin/sh") cmd.Stdin = reader cmd.Stdout = writer // Start the command and wait for it to finish if err := cmd.Start(); err != nil { return err } if err := cmd.Wait(); err != nil { return err } // Write each command to the shell's standard input for _, command := range commands { if _, err := writer.Write([]byte(command + "\n")); err != nil { return err } } // Close the pipe to signal the end of input if err := writer.Close(); err != nil { return err } // Read the output from the shell command output, err := ioutil.ReadAll(reader) if err != nil { return err } // Return the output return nil }
Fungsi ini mengambil sekeping arahan sebagai input dan melaksanakannya dalam urutan dalam satu contoh shell. Ia memaipkan arahan ke input standard shell dan kemudian membaca outputnya.
Dengan menggunakan pendekatan ini, arahan seterusnya akan dilaksanakan dalam direktori kerja yang sama seperti arahan sebelumnya dan isu yang dihadapi sebelum ini akan diselesaikan .
Atas ialah kandungan terperinci Bagaimana untuk Menjalankan Berbilang Perintah Secara Berurutan dalam Contoh Shell Tunggal dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!