You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Shell脚本中排除docker-compose run启动日志并存储命令结果

解决方法

方法1:重定向标准错误输出到/dev/null

docker-compose run 输出的容器启动日志(如 Creating terraform_aws_run ... done.)默认会发送到标准错误流(stderr),而容器内执行命令的结果会发送到标准输出流(stdout)。因此只需捕获stdout,将stderr重定向到空设备即可:

list_account_aliases=$(docker-compose run --rm aws iam list-account-aliases 2>/dev/null)

方法2:使用--quiet参数抑制额外日志

添加--quiet参数可以直接抑制docker-compose的镜像拉取进度、容器启动状态等冗余输出,仅保留容器内命令的执行结果:

list_account_aliases=$(docker-compose run --rm --quiet aws iam list-account-aliases)

方法3:过滤输出内容(兜底方案)

如果启动日志意外混入标准输出,可以用文本过滤工具(如sed)截取启动日志之后的内容。这种方式依赖启动日志的固定格式,通用性稍弱:

list_account_aliases=$(docker-compose run --rm aws iam list-account-aliases | sed -n '/done\./,$p')

说明:sed -n '/done\./,$p' 表示从包含done.的行开始,输出到最后一行的内容。

内容的提问来源于stack exchange,提问作者naomichi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 10:35:20