2017-03-05 73 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匹配評論。 此外,重要的是隻有一條匹配線。