Masalah:
Apabila cuba melaksanakan perintah terbina dalam shell Linux, seperti "perintah," daripada atur cara Pergi menggunakan exec.Command, atur cara gagal dengan ralat yang menunjukkan bahawa boleh laku tidak ditemui dalam laluan sistem.
Penyelesaian:
1. Menggunakan exec.LookPath:
Satu pendekatan asli dalam Go untuk melaksanakan arahan terbina dalam ialah menggunakan fungsi exec.LookPath. Fungsi ini mencari sistem untuk arahan yang ditentukan dan mengembalikan laluannya jika ia wujud. Untuk menggunakan kaedah ini, mula-mula gunakan exec.LookPath untuk mencari arahan dan kemudian gunakan exec.Command untuk melaksanakannya bersama-sama dengan sebarang hujah yang diperlukan.
Contoh:
path, err := exec.LookPath("command") if err != nil { return fmt.Errorf("command not found: %w", err) } exec.Command(path, "-v", "foo")
2. Menggunakan Panggilan Sistem:
Sebagai alternatif, anda boleh menggunakan binari sistem untuk melaksanakan arahan shell. Contoh berikut menjalankan perintah "perintah" dengan pilihan "-v" dan hujah "foo":
exec.Command("system", "-c", "command -v foo")
3. Melaksanakan melalui Shell:
Jika perlu, anda boleh melaksanakan arahan melalui shell dengan menambahkannya dengan laluan shell, seperti yang ditunjukkan di bawah:
exec.Command("/bin/bash", "-c", "command -v foo")
Nota :
Adalah penting untuk menggunakan kaedah yang sesuai berdasarkan keperluan anda. Untuk kebanyakan kes, menggunakan exec.LookPath ialah pendekatan yang disyorkan kerana ia membenarkan pelaksanaan asli bagi arahan terbina dalam. Walau bagaimanapun, untuk senario yang lebih kompleks atau apabila berantaramuka dengan alatan sistem lain, mungkin perlu menggunakan perduaan sistem atau melaksanakan melalui cangkerang.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Perintah Terbina dalam Shell Linux dari Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!