Menjalankan Perintah MV dengan Kad Liar dalam Go
Dalam Go, pakej exec membolehkan pelaksanaan perintah luaran. Walau bagaimanapun, apabila cuba melaksanakan perintah mv dengan kad bebas menggunakan exec.Command, ralat menyatakan "Tiada fail atau direktori sedemikian" mungkin timbul.
Sebab ralat ini ialah apabila pengguna memasukkan arahan yang mengandungi kad bebas, seperti "mv ./source-dir/*", cangkerang mengembangkan kad bebas kepada senarai fail yang sepadan. Walau bagaimanapun, dalam Go, fungsi exec.Command hanya menghantar rentetan yang mengandungi kad bebas sebagai hujah kepada perintah, dan bukannya mengembangkannya.
Untuk menyelesaikan isu ini, seseorang boleh mengembangkan kad bebas secara manual dengan menggunakan fungsi filepath.Glob, yang mengembalikan sepotong laluan fail yang sepadan. Sebagai alternatif, seseorang boleh memanggil shell untuk melakukan pengembangan. Ini boleh dicapai dengan menggunakan fungsi exec.Command dengan "/bin/sh" sebagai hujah pertama, diikuti dengan "-c" dan rentetan arahan dengan wildcard, seperti:
cmd := exec.Command("/bin/sh", "-c", "mv ./source-dir/* ./dest-dir")
Oleh memanfaatkan kaedah ini, cangkerang akan mengendalikan pengembangan kad bebas, membenarkan perintah mv untuk dilaksanakan dengan jayanya.
Atas ialah kandungan terperinci Bagaimana untuk Menjalankan Perintah `mv` dengan Wildcard dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!