2017-03-05 51 views
0

我试着做在Linux中oneliner将从wp-config.php收集数据库主机,数据库名称,用户名和密码,并会合并成一条线在那里我可以用.sh文件导入数据库。创建oneliner导入数据库

的代码,我需要收集块:

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

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

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

/** MySQL hostname */ 
define('DB_HOST', 'localhost'); 

我试图创建的行是:

mysql -h localhost -u username_here --password="password_here" database_name_here < db-backup.sql

我是新来这使我有什么试图做的是:

grep DB_HOST DB_USER wp-config.php | cut -d "'" -f4 | awk '{print "mysql -h "$0;}'这开始工作,但是当我想添加更多信息到字符串即时通讯只是得到最后一部分。

如何编写此文件以获取包含所有信息的完整行?

回答

0
MYSQLPWD=$(cat wp-config.php |grep DB_PASSWORD | cut -d \' -f 4) 
MYSQLUSR=$(cat wp-config.php |grep DB_USER | cut -d \' -f 4) 
MYSQLDBNAME=$(cat wp-config.php |grep DB_NAME | cut -d \' -f 4) 
HT="localhost" 

echo $MYSQLPWD 
echo $MYSQLUSR 
echo $MYSQLDBNAME 
echo $HT 

mysql -h$HT -u$MYSQLUSR -p$MYSQLPWD $MYSQLDBNAME < $MYSQLDBNAME 
+0

非常感谢,它的工作! :) – Quarskel

0

不是一个套,但作品为您简单的例子

DB_PASSWORD=$(grep DB_PASSWORD wp-config.php | cut -d "'" -f4) 
DB_USER=$(grep DB_USER wp-config.php | cut -d "'" -f4) 
DB_NAME=$(grep DB_NAME wp-config.php | cut -d "'" -f4) 
DB_HOST=$(grep DB_HOST wp-config.php | cut -d "'" -f4) 

echo "mysql -h $DB_HOST -u $DB_USER --password=\"$DB_PASSWORD\" $DB_NAME" 

几点注意事项:你不需要awk中,你使用它只是连接字符串,所以我删除它。而在输入文件中的相关线路的检测是不完美的,它可以通过很多事情混淆,例如如果在输入文件

/** we are using blabla as DB_NAME because <reasons> **/ 

这将检测线为DB_NAME匹配评论。 此外,重要的是只有一条匹配线。