用例的简短介绍:
我正在使用一个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 "
(我已经在run和exec上进行了测试,但是它们可能使用相同的内核)。
当我使用ssh进入容器docker exec -it <container_id> /bin/sh
并运行完全相同的命令时,它就像一个超级按钮。
似乎通过docker exec / run执行shell命令不支持嵌套在$()
?
vendor
例如,这是一个目录。
好的,因此请注意,
—
cuonglm
$(...)
在外壳程序在docker容器中运行之前,外壳程序已将其用双引号引起来。因此,问题可能出在您当前的目录内容上。做了docker exec container /bin/sh -c 'go test $(go list ./... | grep -v "<excluded>")'
工作?
$(go list ./... | grep -v '<excluded>'
,什么<excluded>
是?