Melaksanakan Berbilang Perintah dalam Shell Tunggal dalam Go
Menjalankan berbilang arahan secara berturut-turut ialah tugas biasa dalam skrip shell. Walaupun pakej os/exec dalam Go menyediakan kefungsian untuk melaksanakan arahan, ia mungkin tidak serta-merta jelas bagaimana untuk menjalankan berbilang arahan dalam shell yang sama. Artikel ini menyediakan penyelesaian kepada masalah ini.
Dalam kod contoh yang disediakan, matlamatnya adalah untuk menjalankan cd, ./configure dan membuat arahan mengikut turutan. Pada mulanya, kod cuba mencapai ini dengan memulakan setiap arahan secara berasingan, tetapi pendekatan ini gagal kerana setiap arahan dilaksanakan dalam shell baharu, membawa kepada ralat 'tiada fail atau direktori sedemikian' untuk ./configure.
Untuk melaksanakan arahan dalam shell yang sama, seseorang boleh menggunakan sintaks berikut:
cmd := exec.Command("/bin/sh", "-c", "command1; command2; command3; ...") err := cmd.Run()
Di sini, shell, /bin/sh, digunakan dengan -c pilihan yang membolehkannya mentafsir arahan yang disediakan. Walau bagaimanapun, kaedah ini memerlukan pengendalian input pengguna yang teliti untuk mengelakkan kelemahan suntikan shell.
Pendekatan alternatif ialah menetapkan direktori kerja semasa sebelum melaksanakan arahan:
config := exec.Command("./configure", "--disable-yasm") config.Dir = folderPath build := exec.Command("make") build.Dir = folderPath
Pendekatan ini memastikan bahawa arahan dilaksanakan dalam direktori yang ditentukan tanpa bergantung pada shell. Ia meniru gelagat menjalankan laluan cd dan kemudian melaksanakan ./configure dan membuat dalam sesi terminal yang sama.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Berbilang Perintah Shell Secara Berurutan dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!