从wp-config.php中读取变量

时间:2011-09-28 17:14:03

标签: bash shell variables scripting

我正在为一些WP站点编写基本的迁移脚本,我正在尝试通过读取wp-config文件来自动创建mysql数据库和用户凭据

如何从wp-config文件中读取以下变量,以便在bash脚本中有效地结束3个变量:

/** The name of the database for WordPress */
define('DB_NAME', 'somedbname');

/** MySQL database username */
define('DB_USER', 'someusername');

/** MySQL database password */
define('DB_PASSWORD', 'somerandompassword');

例如我的输出应该有效地给我:

WPDBNAME=somedbname
WPDBUSER=somedbuser
WPDBPASS=somerandompassword

6 个答案:

答案 0 :(得分:23)

试试这个:

WPDBNAME=`cat wp-config.php | grep DB_NAME | cut -d \' -f 4`
WPDBUSER=`cat wp-config.php | grep DB_USER | cut -d \' -f 4`
WPDBPASS=`cat wp-config.php | grep DB_PASSWORD | cut -d \' -f 4`

答案 1 :(得分:3)

如果您想使用wp-config详细信息连接到mysql,您可以使用;

mysql -u `cat wp-config.php | grep DB_USER | cut -d \' -f 4` -p`cat wp-config.php | grep DB_PASSWORD | cut -d \' -f 4` -h `cat wp-config.php | grep DB_HOST | cut -d \' -f 4` `cat wp-config.php | grep DB_NAME | cut -d \' -f 4`

答案 2 :(得分:2)

你可以使用awk:

awk -F"[()']" '/^define/{printf "%s=\"%s\"\n", $3, $5;}' < foo.php

这会给你:

DB_NAME="somedbname"
DB_USER="someusername"
DB_PASSWORD="somerandompassword"

请注意,此解决方案适用于包含空格的变量。

答案 3 :(得分:1)

find . -name "wp-config.php" -print0 | xargs -0 -r grep -e "DB_NAME" -e "DB_USER" -e "DB_PASSWORD"

答案 4 :(得分:0)

以下是将php变量传递给bash而不需要解析的通用方法示例:

#!/bin/bash

source <(php -r 'require("wp-config.php"); echo("DB_NAME=".DB_NAME."; DB_USER=".DB_USER."; DB_PASSWORD=".DB_PASSWORD); ')
mysqldump --user $DB_USER --password="$DB_PASSWORD" $DB_NAME | gzip > $DB_NAME-$(date +%Y%m%d%H%M%S).sql.gz

算法解释用几句话:

  1. 运行你的php
  2. 将变量打印为var = value
  3. 源输出
  4. 在bash中使用变量

答案 5 :(得分:0)

如果您尝试转储MySQL数据库,还可以使用wp-cli db export函数:

wp db export --path=PATHTOYOURWP