2013-11-17 6 views
34

Следующий код работает в командной строкеКак запустить команду mysql на bash?

mysql --user='myusername' --password='mypassword' --database='mydatabase' --execute='DROP DATABASE myusername; 
CREATE DATABASE mydatabase;' 

Однако, он не работает на Баш файл на excecution

#!/bin/bash 
user=myusername 
password=mypassword 
database=mydatabase 

mysql --user='$user' --password='$password' --database='$database' --execute='DROP DATABASE $user; CREATE DATABASE $database;' 

Я получаю следующее сообщение об ошибке:

ERROR 1045 (28000): Access denied for user '$user'@'localhost' (using password: YES)

Как сделать файл bash запускается в командной строке?

ответ

66

Используйте двойные кавычки при использовании переменных BASH.

mysql --user="$user" --password="$password" --database="$database" --execute="DROP DATABASE $user; CREATE DATABASE $database;" 

BASH не расширяет переменные в одинарных кавычках.

5

Эта работа сработала, двойные кавычки, когда $ user и $ password находятся за пределами одиночных кавычек. Одиночные кавычки, когда внутри одного оператора кавычек.

mysql --user="$user" --password="$password" --database="$user" --execute='DROP DATABASE '$user'; CREATE DATABASE '$user';' 
Смежные вопросы