mysql datenbanken per shell script sichern

Jan-Benedict Glaw jbglaw at lug-owl.de
Sun Mar 25 22:56:36 CEST 2007


On Sun, 2007-03-25 20:05:54 +0200, hauke homburg <h.homburg at w3-creative.de> wrote:
> Datei. Diese lese ich dann in ein Array ein. Leider klappt der Zugriff aus 
> einer For Schleife auf da sarray nicht ganz.
> 
> Die Schleife sieht folgendermassen aus:
> 
> for Database in "$db";

Zwei Fehler in einer Zeile :)  Erstmal ist das kein Array. $db ist nur
eine Variable, die einzelne Worte als eine zusammenhängende
Zeichenfolge, zufälligerweise mit Zeichen aus $IFS untereinander
getrennt, enthält.

Und da zu noch Anführungsstriche drumherum machst, wird $Database nur
einmal befüllt.

> do mysqldump -u user -ppassword $db > $db_backup.sql;

Und hier solltest Du (Stichwort: longest match) dafür in jedem Fall
Anführungsstriche setzen.

> done;

Außerdem hast Du noch überflüssig viele Semikolons in dem Text. In
"kurz" kann man sagen, daß ein Zeilenumbruch ein Semikolon ersetzt.

> Das Array enthällt dabei die Liste der Datenbanken.
> wenn ich die Schleife auskommentiere und einfach ein echo "$db" mache dann 
> kommt Liste auch wieder als Liste angezeigt.

So könnte das also aussehen:

for Database in $db; do
	mysqldump -u user -ppassword "$Database" > "${Database}_backup.sql"
done

"$Database" wird elementweise befüllt (wobei "elementweise" bedeutet,
daß in $db die einzelnen Wörter gemäß $IFS auseinandergeschnitten
werden.)  "$db" enthält die mit Zeichen aus $IFS getrennten DB-Namen.

Das versagt natürlich, wenn Du mal TABs, Leerzeichen oder
Zeilenumbrüche in den DB-Namen haben solltest...

MfG, JBG

-- 
      Jan-Benedict Glaw      jbglaw at lug-owl.de              +49-172-7608481
 Signature of:                      http://perl.plover.com/Questions.html
 the second  :
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lug-owl.de/pipermail/linux/attachments/20070325/5fc774fa/attachment.sig>


More information about the Linux mailing list