Rumah > pembangunan bahagian belakang > Golang > Mengapakah `mv` dengan Wildcards Berkelakuan Berbeza dalam Go dan Bash?

Mengapakah `mv` dengan Wildcards Berkelakuan Berbeza dalam Go dan Bash?

Patricia Arquette
Lepaskan: 2024-12-10 18:48:11
asal
914 orang telah melayarinya

Why Does `mv` with Wildcards Behave Differently in Go and Bash?

Melaksanakan Perintah mv Secara Berbeza dalam Go dan Bash

Dalam Go, menggunakan pakej exec untuk melaksanakan perintah mv boleh membawa kepada isu apabila menggunakan kad bebas seperti "*" dalam hujah arahan. Walaupun arahan berfungsi seperti yang diharapkan dalam terminal, kad bebas asterisk nampaknya tidak berfungsi dalam skrip Go.

Punca percanggahan ini terletak pada cara shell dan Go mengendalikan hujah arahan. Dalam terminal, shell mentafsir kad bebas dan menggantikannya dengan senarai nama fail yang sepadan. Walau bagaimanapun, dalam Go, arahan dihantar sebagai rentetan dan ia melihat kad bebas secara literal sebagai sebahagian daripada hujah.

Untuk menyelesaikan isu ini, anda mempunyai dua pilihan:

Kembangkan Kad Liar Secara Manual

Anda boleh menggunakan fungsi failpath.Glob Go untuk mengambil senarai fail yang sepadan dengan corak kad bebas, dan kemudian hantar nama fail individu sebagai argumen kepada exec.Command. Contohnya:

files, err := filepath.Glob("./source-dir/*")
if err != nil {
    // Error handling
}

cmd := exec.Command("mv", files, "./dest-dir")
Salin selepas log masuk

Gunakan Shell Invocation

Anda boleh memanggil shell itu sendiri untuk melaksanakan perintah mv dengan kad bebas. Cangkang akan mentafsir kad bebas dan menyampaikan hujah yang diperluas kepada perintah mv. Contohnya:

cmd := exec.Command("/bin/sh", "-c", "mv ./source-dir/* ./dest-dir")
Salin selepas log masuk

Dengan menggunakan salah satu pendekatan ini, anda boleh memastikan bahawa kad bebas dikendalikan dengan betul dalam skrip Go anda, membolehkan anda melaksanakan perintah mv seperti yang dimaksudkan.

Atas ialah kandungan terperinci Mengapakah `mv` dengan Wildcards Berkelakuan Berbeza dalam Go dan Bash?. 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