Pengantar singkat tentang use case:
Saya menggunakan dockerwadah untuk menjalankan gotes saya menggunakan go test ./.... Ini dapat dicapai dengan mudah menggunakan docker exec <container> /bin/sh -c "go test ./...". Sayangnya go test ./...berjalan di semua subdirektori dan saya ingin mengecualikan satu (direktori vendor).
Solusi yang disarankan untuk ini adalah menggunakan perintah berikut:, go test $(go list ./... | grep -v '<excluded>'entah bagaimana ini membuat saya dengan hasil berikut:
docker run golang:1.6.2-alpine /bin/sh -c "go test " (Saya telah menguji ini pada kedua menjalankan dan exec, tetapi mereka mungkin menggunakan inti yang sama).
Ketika saya ssh ke dalam wadah menggunakan docker exec -it <container_id> /bin/shdan menjalankan perintah yang sama persis, itu berfungsi seperti pesona.
Tampaknya mengeksekusi perintah shell melalui docker exec / run tidak mendukung perintah yang bersarang $()?
vendormisalnya.
$(...)diperluas oleh shell Anda di dalam tanda kutip ganda sebelum dijalankan di dalam wadah buruh pelabuhan. Jadi, masalahnya mungkin berasal dari konten direktori Anda saat ini. Berhasil docker exec container /bin/sh -c 'go test $(go list ./... | grep -v "<excluded>")'?
$(go list ./... | grep -v '<excluded>', apa<excluded>itu?