
Ich habe Folgendes in einem Bash-Skript:
target="-h1.2.3.4 -P3307"
user="-uusername"
pass="-ppassword"
mysql ${target} ${user} ${pass} -se"SHOW DATABSES;"
Das funktioniert einwandfrei, außer dass eine Verbindung zu Port 3306 und nicht zu Port 3307 hergestellt wird. Wie kann ich dafür sorgen, dass es ${target}
richtig gelesen wird?
Ohne Aufspaltung target
in zwei separate Variablen.
Wenn ich manuell ausführe
mysql -h1.2.3.4 -P3307 -uusername -ppassword
dann funktioniert es einwandfrei, und das ist es, was ich erreichen möchte. Es ist fast so, als würde MySQL das ignorieren -P3307
und das Standard verwenden 3306
.
Ich habe auch versucht, alles in eine Variable zu packen, aber das funktioniert auch nicht (Port, Benutzername und Passwort werden ignoriert).
Das Problem scheint darin zu liegen, dass MySQL den Wert so interpretiert, $target
als wäre er ein und dasselbe. Wenn ich Port und Host vertausche, erhalte ich:
target="-P3307 -h1.2.3.4"
mysql ${target} ${user} ${pass} -se"SHOW DATABSES;"
Ich bekomme:
Unknown suffix ' ' used for variable 'port' (value '3307 -h1.2.3.4')
mysql: Error while setting value '3307 -h1.2.3.4' to 'port'
Ich weiß also nicht, ob das ein MySQL- oder ein Linux-Problem ist?