Rumah >pembangunan bahagian belakang >Golang >Mengapa My Go `exec.Command('mv', '*')` Gagal dengan 'status keluar 1'?

Mengapa My Go `exec.Command('mv', '*')` Gagal dengan 'status keluar 1'?

DDD
DDDasal
2024-12-16 04:12:57535semak imbas

Why Does My Go `exec.Command(

Go: Ralat "Gagal Melaksanakan Perintah" Apabila Menggunakan Aksara Wildcard

Apabila cuba melaksanakan perintah "mv" menggunakan pakej exec Go , mesej ralat yang menyatakan "status keluar 1" mungkin berlaku. Isu ini timbul apabila menggunakan kad bebas, seperti "*", dalam arahan.

Masalahnya terletak pada cara shell mentafsir arahan. Apabila kad bebas dimasukkan pada cangkerang, ia dikembangkan menjadi senarai nama fail yang sepadan. Walau bagaimanapun, apabila menggunakan pakej exec, kad bebas tidak dikembangkan dan perintah itu dilaksanakan dengan kad bebas itu sendiri sebagai hujah.

Untuk menyelesaikan isu ini, dua pendekatan boleh diambil:

  1. Gunakan laluan fail.Glob: Kembangkan kad bebas secara manual ke dalam senarai nama fail menggunakan fungsi laluan fail.Glob dan pas kepingan yang terhasil sebagai hujah kepada pakej exec.
  2. Gunakan Shell: Gunakan keupayaan pengembangan kad bebas shell dengan memanggilnya menggunakan exec.Command dengan "/bin/sh" sebagai binari dan "-c" sebagai hujah. Cangkang kemudian akan mengembangkan kad bebas sebelum menghantar arahan kepada boleh laku "mv".

Atas ialah kandungan terperinci Mengapa My Go `exec.Command('mv', '*')` Gagal dengan 'status keluar 1'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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