加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – Docker exec / run shell命令嵌套

发布时间:2020-12-15 18:41:26 所属栏目:安全 来源:网络整理
导读:用例简介: 我正在使用一个docker容器来运行我的go测试使用go test./ ….这可以使用docker exec container轻松实现. / bin / sh -c“go test./ …”.不幸的是,测试./ …在所有子目录中运行,我想排除一个(供应商目录). 建议的解决方案是使用以下命令:go test
用例简介:

我正在使用一个docker容器来运行我的go测试使用go test./ ….这可以使用docker exec< container>轻松实现. / bin / sh -c“go test./ …”.不幸的是,测试./ …在所有子目录中运行,我想排除一个(供应商目录).

建议的解决方案是使用以下命令:go test $(go list./ … | grep -v’< excluded>‘,不知怎的,这给我留下了以下结果:

docker run golang:1.6.2-alpine / bin / sh -c“go test”(我已在run和exec上测试了这个,但它们可能使用相同的核心).

当我使用docker exec -it< container_id> ssh进入容器时/ bin / sh并运行完全相同的命令,它就像一个魅力.

似乎通过docker exec / run执行shell命令不支持嵌套$()的任何命令?

由于常见的bash问题,您的命令可能无法按预期工作:
docker exec <container> /bin/sh -c "go test $(go list ./... | grep -v '<excluded>')"

您尝试运行的命令将在主机上执行子shell $()的扩展,因为它在双引号内.

这可以通过在问题评论中单引用@cuonglm建议的命令来解决.

docker exec <container> /bin/sh -c 'go test $(go list ./... | grep -v "<excluded>")'

编辑:一个小演示

[wbarnwell@host ~]$docker run -it --rm busybox /bin/sh -c '$(whoami)'
/bin/sh: root: not found
[wbarnwell@host ~]$docker run -it --rm busybox /bin/sh -c "$(whoami)"
/bin/sh: wbarnwell: not found

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读