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

使用Grep提取含特殊字符的WordPress配置项时异常

解决WordPress wp-config.php配置读取时特殊字符带引号的问题

你的问题出在通过grep+cut提取配置值的方式不够健壮,遇到含特殊字符(如$)的字段时,会错误地保留单引号,导致后续uapi命令执行失败。

修改后的脚本

用sed精准匹配wp-config.php中的define语句,直接捕获引号内的配置值,避免引入多余引号:

wpconfigs=($(find . -name "wp-config.php"))
for i in "${wpconfigs[@]}"; do
    # 提取数据库名称、用户名、密码,自动去除单引号
    wpdb=$(sed -n "s/^\s*define\s*('DB_NAME',\s*'\([^']*\)');/\1/p" "$i")
    wpuser=$(sed -n "s/^\s*define\s*('DB_USER',\s*'\([^']*\)');/\1/p" "$i")
    wppass=$(sed -n "s/^\s*define\s*('DB_PASS',\s*'\([^']*\)');/\1/p" "$i")
    allpriviledges="ALL PRIVILEGES"

    # 执行uapi命令,双引号包裹变量确保特殊字符正确传递
    uapi --output=jsonpretty --user="$cpuser" Mysql create_user name="${wpuser}" password="${wppass}"
done

关键改进说明

  1. 精准匹配配置行:sed的正则表达式专门匹配define('KEY', 'VALUE');格式的行,忽略注释行或其他无关内容。
  2. 正确捕获值:\([^']*\)部分会捕获单引号之间的所有内容(包括特殊字符),且不包含引号本身。
  3. 兼容格式差异:\s*用来匹配行内任意空格,适配不同排版的wp-config.php文件。
  4. 安全传递变量:执行uapi时用双引号包裹变量,确保$等特殊字符不会被bash当作元字符解析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 15:05:31