You need to enable JavaScript to run this app. wp-cli表格输出存入bash变量后格式丢失,如何保留格式发Slack webhook
优惠活动
大模型
产品
解决方案
定价
更多

wp-cli表格输出存入bash变量后格式丢失,如何保留格式发Slack webhook

问题原因

你遇到的格式丢失并非Bash主动剔除了表格的+、-、|字符,核心是两个常见的Shell/命令行工具特性导致的:

  • 未用双引号包裹变量触发了Shell分词与空白折叠:当你直接写echo $updatesplugins时,Shell会将变量内的所有换行、连续空格、制表符统一识别为单词分隔符,把整段内容拆分为独立单词后用单个空格拼接再传给echo,原本的排版结构会被完全打散。
  • 部分命令行工具的TTY检测逻辑:wp-cli这类工具会自动判断标准输出是否为交互式终端,如果检测到输出是被赋值给变量、传入管道这类非终端场景,部分版本会默认输出无格式的纯文本,即便你指定了--format=table也可能失效。

解决方法

1. 保留原始表格格式

首先修正变量引用写法,所有用到$updatesplugins的地方都用双引号包裹,强制Shell保留原始的换行和空格:

#!/bin/bash
updatesplugins=$(wp plugin update --all --dry-run --format=table)
echo "$updatesplugins"

如果执行后还是没有表格边框,可以在wp-cli命令后加--color=always强制输出完整格式化内容:

updatesplugins=$(wp plugin update --all --dry-run --format=table --color=always)

2. 发送到Slack Webhook

Slack的消息支持Markdown代码块渲染,你可以把表格内容包裹在三个反引号中,这样Slack会自动用等宽字体展示,完全保留表格排版,完整示例脚本如下:

#!/bin/bash
# 拉取更新表格
updatesplugins=$(wp plugin update --all --dry-run --format=table --color=always)
# 构造Slack请求payload
payload=$(cat <<EOF
{
  "text": "WordPress插件可更新列表:\n\`\`\`\n$updatesplugins\n\`\`\`"
}
EOF
)
# 发送请求到Slack,替换为你自己的Webhook地址即可
curl -X POST \
  -H "Content-Type: application/json" \
  --data "$payload" \
  你的Slack Webhook地址

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 07:06:13