Puncte:1

bash script â comenzi și variabile MySQL

drapel cn

Am un script bash care automatizează o instalare a serverului Nextcloud.

Pentru a rula comenzi MySQL folosesc comanda mysql -e

utilizator@nume gazdă:~$ mysql -e „CREATE BAZĂ DE DATE âNextcloudDataBaseNameâ"

Aș dori să stochez numele db, numele de utilizator, parola etc. În variabile

Cum se scriu comenzi mysql -e cu variabile?

utilizator@nume gazdă:~$ mysql -e „CREATE UTILIZATOR â$UserNameâ@'localhost' IDENTIFICAT DE â$UserPassâ"

utilizator@nume gazdă:~$ mysql -e „CREATE UTILIZATOR ${UserName}@'localhost' IDENTIFICAT DE ${UserPass}”

Cele două comenzi de mai sus nu rulează

Mesaj de eroare cu parola utilizatorului (parola de test) :

EROARE 1064 (42000) la linia 1: Aveți o eroare în sintaxa dvs. SQL; verificați manualul care corespunde versiunii dvs. de server MariaDB pentru sintaxa corectă de utilizat lângă „qwerty1234”

Această sintaxă pare să funcționeze:

utilizator@nume gazdă:~$ mysql -e „CREAȚI UTILIZATOR „${DbUserName}”@”localhost” IDENTIFICAT DE „${DbUserPass}””

Citate simple în jurul numelor de variabile, dar este aceasta cea mai bună sintaxă, cea mai bună practică?

Mulțumiri :-)

drapel ua
ATENȚIE: Dacă există o parolă destul de mare, bash vă va da o eroare de sintaxă.
Puncte:0
drapel cn

Așa (cu aici-doc):

mysql<<EOF
CREATE USER '$UserName'@'localhost' IDENTIFICAT DE '$UserPass';
EOF

Aflați cum să citați corect în shell, este foarte important:

„Citale duble” fiecare literal care conține spații/metacaractere și fiecare expansiune: "$var", „$(comanda „$var”)”, „${array[@]}”, „a și b”. Utilizare „ghilimele simple” pentru cod sau literal $'s: „Costă 5 USD”, gazdă ssh „echo „$HOSTNAME””. Vedea
http://mywiki.wooledge.org/Quotes
http://mywiki.wooledge.org/Arguments
http://wiki.bash-hackers.org/syntax/words

Maxime avatar
drapel cn
Mulțumesc, Gilles, totul funcționează cu Here Doc. Merci beaucoup tout fonctionne avec Here Doc et c'est plus propre !

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.