Bagaimana untuk Melaksanakan Berbilang Perintah Shell Secara Berurutan dalam Go?

Susan Sarandon
Lepaskan: 2024-11-25 05:06:11
asal
771 orang telah melayarinya

How to Execute Multiple Shell Commands Sequentially in Go?

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()
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan