Variable wird nicht richtig gelesen

Variable wird nicht richtig gelesen

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 targetin 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 -P3307und 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, $targetals 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?

verwandte Informationen