如何将文本与printenv输出合并为单行写入Docker容器日志
实现方案
你原有写法存在两个问题:
- 第一条
echo命令把重定向逻辑>> /proc/1/fd/1写在了双引号内部,Shell不会识别这是重定向操作,会把这段内容当成普通文本输出,无法正常写入日志 - 分两次执行重定向输出时,每次输出默认会在末尾追加换行符,最终会分成两行展示
可以根据你的使用习惯选以下任意一种方式实现单行输出:
单条echo直接拼接(最简洁)
直接在同一条echo语句里引用环境变量,注意把重定向逻辑放到引号外面:echo "自定义文本内容 版本值:${VERSION}" >> /proc/1/fd/1如果你执行命令的脚本本身就是容器PID=1的主进程启动的,不需要手动重定向到
/proc/1/fd/1,直接输出到标准输出就会被Docker日志收集,命令可以简化为echo "自定义文本内容 ${VERSION}"。嵌入printenv命令输出
如果你习惯用printenv获取环境变量,可以通过$()命令替换把取值嵌入到同一条输出语句中:echo "自定义文本内容 $(printenv VERSION)" >> /proc/1/fd/1保留两次命令的写法
如果你一定要拆分两次执行逻辑,给第一条echo加上-n参数,取消输出末尾自动追加的换行符即可:echo -n "自定义文本内容 " >> /proc/1/fd/1 printenv VERSION >> /proc/1/fd/1
内容的提问来源于stack exchange,提问作者Seura
相关产品推荐
相关产品推荐

