繁体   English   中英

创建一个oneliner导入数据库

[英]Creating a oneliner to import database

我正在尝试在Linux中制作一个oneliner,它将从wp-config.php收集数据库主机,数据库名称,用户名和密码,并将其组合到一行中,我可以使用.sh文件导入数据库。

我需要收集的代码块是:

/** 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;}' grep DB_HOST DB_USER wp-config.php | cut -d "'" -f4 | awk '{print "mysql -h "$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

不是单线的,但适用于您的简单示例

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匹配。 同样,重要的是只有一条匹配的线。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM