mysql bash shell脚本输出错误

时间:2019-03-20 19:30:13

标签: mysql linux bash shell cron

我试图创建一个运行sql查询的bash shell脚本,然后再创建一个在特定时间运行它的cronjob。

我创建了我的bash脚本,见下文

mysql -u $host -D $dbname -u $user -p$password -e $mySqlQuery

我将-u -D -p -e全部包装在变量中。我也将其更改为可执行文件。当我运行它。它给出了输出说明。没有找到指令。谁能告诉我我犯的错误?

下面是bash脚本

host="host"
user="user"
dbname="database"
password="password"
mySqlQuery = "SELECT *
FROM invoice i
  JOIN item it
    ON it.invoice_id = i.id
  JOIN user u
    ON i.user_id = u.id
  JOIN gateway_response gr
    ON gr.invoice_id = i.id

WHERE  i.created_at >= '2019-03-01 00:00:00' and
i.created_at <= '2019-03-17 23:59:59' and i.status=9"

mysql -u $host -D $dbname -u $user -p$password -e $mySqlQuery

以下是我运行它时收到的错误。

/home/chris2kus/givingDetectRun.sh: line 8: mySqlQuery: command not found /home/chris2kus/givingDetectRun.sh: line 20: mysql: command not found – 

3 个答案:

答案 0 :(得分:1)

Application.Calculation和变量名=周围不能有空格。

此外,我建议您将变量用双引号引起来,即使用“ $ host”而不是仅使用$ host。

答案 1 :(得分:0)

您可以编写这样的文件和 chmod 755 filename.sh

#!/bin/bash

host="localhost"
dbname="test"
user="root"
password="xxxxxxxxxx"

mySqlQuery="select * 
from col;"

mysql -u $host -D $dbname -u $user -p$password -e "$mySqlQuery"

样品

$chmod 755 testmysql.sh
$
$ ./testmysql.sh 
+----+------+------+------+
| id | Col1 | Col2 | Col3 |
+----+------+------+------+
|  1 |    1 |    2 |    3 |
|  2 |    2 |    3 |    4 |
|  3 |    3 |    4 |    5 |
+----+------+------+------+
$

答案 2 :(得分:0)

对于初学者,请确保您的第5行看起来像 mySqlQuery="SELECT..."

(请注意赋值运算符两边都没有空格)

几秒钟内,尝试重新格式化整个MySQL查询以使其适合单行。 (也许是Heidi,因为这是一个查询,因为这样可以使您至少在语法上避免错误)

对于三分之二,一旦确认bash能够按预期运行,请添加\ n以告知bash您正在下一行继续执行该命令

优化前的原型制作。在运行之前先运行它。