【发布时间】:2017-12-14 16:54:08
【问题描述】:
我正在尝试在我的 shell 脚本中运行 ssh 命令,该命令将自动在远程服务器上创建数据库、用户、密码等:
password=`date +%s|sha256sum|base64|head -c 32`
read -p "Enter staging folder name... e.g. xxxxxxxx: " stagingdirectory
echo $stagingdirectory
read -p "Give the name for the database (this will be used in mysql)" dbname
echo $dbname
read -p "Give the name of the user for the database (this will be used in mysql)" dbuser
echo $dbuser
sqlstatement="mysql -uXXXXXXX -pXXXXXXXX -hXXXXXXXX -e "
sqlstatement+='"CREATE DATABASE IF NOT EXISTS $dbname;CREATE USER $dbuser@'%' IDENTIFIED BY '$password';GRANT ALL PRIVILEGES ON $dbname.* TO $dbuser@'%';FLUSH PRIVILEGES;"'
echo $sqlstatement
ssh -A $domainname@35.163.55.55 -e "$sqlstatement"
当我尝试运行此命令时,我收到此错误:
这是返回的内容(我已将实际值替换为 XXXX):
错误的转义字符 'mysql -udbadmin -pXXXXX -hXXXXX -e"如果不存在 $dbname 则创建数据库;创建用户 $dbuser@% IDENTIFIED BY XXXXXX;GRANT ALL PRIVILEGES ON $dbname.* TO $dbuser@%;FLUSH特权;"'。
我认为这是由于我的 sql 语句和字符串转义。
【问题讨论】:
-
贴出
$(echo $sqlstatement)的值,问题出在那儿。 -
已添加。