Ich brauche folgenden Befehl auf mehreren Servern auszuführen:Warum Bash-Skript bricht, wenn es in diesem Beispiel Raum trifft?
mysql -h 127.0.0.1 -uroot -psecret mydatabase -e 'SELECT 1;'
Also, ich habe test1.sh
Skript, das dynamische Zeichenfolge es echo-:
#!/bin/bash
echo -n "mysql -h 127.0.0.1 -uroot -psecret mydatabase -e 'SELECT 1'"
Und test2.sh
Skript, die die angegebene Zeichenfolge ausführt:
Wenn ich `./test2.sh ausführen, sehe ich Hilfe Ausgabe, Befehl wird nicht ausgeführt.
Wenn ich Leerzeichen in mysql Abfrage SELECT 1
oder den gesamten -e
Parameter entfernen, und dann ./test2.sh
Skript ausführen, funktioniert alles.
Warum das passiert? Kannst du bitte diese Magie beschreiben?
Meine Bash-Version ist 4.2.46.
Legen Befehle nicht in Variablen, die Verwendung Arrays. Der Grund ist auch nicht funktioniert, ist Zitat-Erweiterung vor Variable auftritt, so erhalten Sie zwei Argumente an mysql 'SELECT' und' 1'' anstelle von eins übergeben. – 123
@ 123 Also, ich sollte Array dann drucken? Könnten Sie bitte ein Beispiel geben? – avasin
Gibt es einen Grund, warum Sie zwei Skripte verwenden? – 123