उपयोग के मामले में एक संक्षिप्त परिचय:
मैं docker
अपने go
परीक्षणों का उपयोग करने के लिए एक कंटेनर का उपयोग कर रहा हूं go test ./...
। इसका उपयोग करके आसानी से प्राप्त किया जा सकता है docker exec <container> /bin/sh -c "go test ./..."
। दुर्भाग्य से go test ./...
सभी उपनिर्देशिकाओं में चलता है और मैं एक (विक्रेता निर्देशिका) को बाहर करना चाहूंगा।
इसके लिए सलाह दिया गया समाधान निम्नलिखित आदेश का उपयोग कर रहा है: go test $(go list ./... | grep -v '<excluded>'
किसी तरह यह मुझे निम्नलिखित परिणाम के साथ छोड़ देता है:
docker run golang:1.6.2-alpine /bin/sh -c "go test "
(मैंने इसे चलाने और निष्पादित करने दोनों पर परीक्षण किया है, लेकिन वे शायद एक ही मूल का उपयोग करते हैं)।
जब मैं कंटेनर में ssh का उपयोग करता हूं docker exec -it <container_id> /bin/sh
और ठीक उसी कमांड को चलाता हूं , तो यह एक आकर्षण की तरह काम करता है।
ऐसा लगता है कि शेल कमांड को अंजाम देने वाले डॉक को निष्पादित / रन करते हैं जो किसी भी कमांड के साथ नेस्टेड का समर्थन नहीं करता है $()
?
vendor
उदाहरण के लिए।
$(...)
डॉक कंटेनर के अंदर चलने से पहले डबल कोट्स के अंदर आपके शेल द्वारा विस्तारित किया गया था। तो, समस्या आपकी वर्तमान निर्देशिका सामग्री से आ सकती है। क्या docker exec container /bin/sh -c 'go test $(go list ./... | grep -v "<excluded>")'
काम करता है?
$(go list ./... | grep -v '<excluded>'
, क्या<excluded>
है?