แนะนำสั้น ๆ เกี่ยวกับกรณีการใช้งาน:
ฉันใช้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>คืออะไร?