【发布时间】:2013-02-21 04:58:41
【问题描述】:
我遇到了一个 shell 脚本问题。
由于某种原因,我已经在双引号 (") 之前使用了 \ 字符,就像我的 shell 脚本的以下行一样。
sql2=\"将 \${db_name}.* 上的所有内容授予 \${db_user}@\${host} 标识的 \${dbpass};\";
但是在MySQL的“grant”命令语法中,我需要在\${dbpass}之前和之后加上双引号,这是我上面给出的shell脚本行的一部分。当我这样放时,\"\${dbpass}\",它在执行过程中抛出语法错误。我需要什么来解决这个问题。
这是一个更新。
这是我要运行的 shell 脚本。
ssh -t qbadmin@10.3.2.0 '
苏根 -c "
echo \"给数据库名称:\";
读取 db_name;
echo \"输入密码:\";
读取 db_pass;
主机=本地主机;
sql1=\"创建数据库\$db_name;\";
sql2=\"将所有 \${db_name}.* 授予 \${db_name}@\${host},由 \"\${db_pass}\";\";
sql3=\"\${sql1}\${sql2}\";
回声\"==============\";
mysql -u root -p -e \"\${sql3}\";
";
'
请参考此脚本,并请让我知道我需要对此进行的必要更改。
谢谢。
【问题讨论】:
-
你提到的变量
$db_name等,它们来自shellscript对吗?其次,真的需要是双引号吗?不支持单引号吗?是什么给出了语法错误,脚本?你如何将它传递给 something 以及什么是 something? -
sql2 是 bash 变量吗?
-
@DavideBerra:我不知道你指的是谁,但我看不出有什么具体的东西使它成为 bash 变量。而是一个shell变量:)
-
请看看我更新的问题。
标签: shell