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

如何让awk在非Success开头的wp-cli输出前添加站点名称?

解决WP-CLI输出添加站点名的问题

问题分析

你当前的脚本仅在wp core update命令的awk处理中添加了站点名,后续命令的awk语句仅输出原行内容;同时WP-CLI的错误、警告信息默认输出到stderr,而awk默认只处理stdout,导致这部分内容也没加上站点名。

修复后的脚本

用函数封装站点处理逻辑,同时将stderr重定向到stdout,确保所有输出都能被awk处理:

process_site() {
    local site_path="$1"
    local site_name="$2"
    
    # 切换到站点目录,失败则终止当前站点的后续处理
    cd "$site_path" || return
    
    # 统一处理各WP-CLI命令,给非Success:开头的行添加站点名前缀
    wp core update 2>&1 | awk -v name="$site_name" '$1 != "Success:" {print name " " $0}'
    wp plugin update --all 2>&1 | awk -v name="$site_name" '$1 != "Success:" {print name " " $0}'
    wp theme update --all 2>&1 | awk -v name="$site_name" '$1 != "Success:" {print name " " $0}'
    wp core verify-checksums 2>&1 | awk -v name="$site_name" '$1 != "Success:" {print name " " $0}'
    wp cli cache clear 2>&1 | awk -v name="$site_name" '$1 != "Success:" {print name " " $0}'
}

# 处理第一个站点
process_site "~/public_html/archiegoodwin/" "Archie Goodwin"
# 复制以下行,替换路径和站点名即可处理剩下7个站点
# process_site "~/public_html/your-site-2/" "Your Site 2"
# process_site "~/public_html/your-site-3/" "Your Site 3"
# ...

关键改进点

  • 函数封装:避免重复编写相同命令,8个站点只需重复调用函数,维护更便捷
  • stderr重定向:通过2>&1将WP-CLI的错误、警告信息转到stdout,确保awk能捕获所有需要处理的输出
  • awk变量传递:用-v name="$site_name"将站点名传入awk,避免字符串硬编码的转义问题
  • 目录切换容错:cd "$site_path" || return确保目录不存在时,不会继续执行当前站点的后续命令

预期输出效果

修改后,非Success开头的输出会自动带上站点名:

Archie Goodwin Error: Strange wp-config.php file: wp-settings.php is not loaded directly.
Archie Goodwin Error: Strange wp-config.php file: wp-settings.php is not loaded directly.
Archie Goodwin Warning: File should not exist: wp-includes/widgets/error_log
...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 16:57:26