2017-03-05 5 views
0

Ich versuche, einen oneliner in Linux zu machen, der Datenbankhost, Datenbankname, Benutzername und Passwort von wp-config.php sammeln und das in eine Zeile kombinieren, wo ich eine Datenbank mit einer .sh Datei importieren kann.Erstellen eines Oneliner zum Importieren der Datenbank

Der Code-Block I sammeln müssen, ist:

/** 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'); 

Die Linie, die ich erstellen bin versucht:

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

Ich bin neu zu dieser so was ich habe versucht zu tun ist:

grep DB_HOST DB_USER wp-config.php | cut -d "'" -f4 | awk '{print "mysql -h "$0;}' Dieser Start funktioniert, aber wenn ich mehr Informationen zu der Zeichenfolge hinzufügen möchte ich nur den letzten Teil.

Wie schreibe ich dies, um eine vollständige Zeile mit allen Informationen zu bekommen?

Antwort

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

Vielen Dank, es hat funktioniert! :) – Quarskel

0

kein Einzeiler, aber für Ihr einfaches Beispiel arbeitet

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" 

Ein paar Anmerkungen: Sie müssen nicht awk benötigen, verwendet man es nur Zeichenfolgen verketten, so dass ich entfernt es. Und die Erfassung der relevanten Zeilen in der Eingabedatei ist nicht perfekt, kann es durch viele Dinge verwechselt wird, zum Beispiel, wenn es ein Kommentar in der Eingabedatei ist

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

Es diese Linie als passend für DB_NAME erkennen würde . Außerdem ist es wichtig, genau eine übereinstimmende Linie zu haben.

Verwandte Themen