ব্যবহারের ক্ষেত্রে একটি সংক্ষিপ্ত ভূমিকা:
আমি 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 "
(আমি এটি রান এবং এক্সিকিউট উভয় ক্ষেত্রেই পরীক্ষা করেছি, তবে তারা সম্ভবত একই কোরটি ব্যবহার করে)।
যখন আমি 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>
?