【问题标题】:mysql bash shell script outputting erromysql bash shell脚本输出错误
【发布时间】:2019-08-11 14:56:50
【问题描述】:

我正在尝试创建一个运行 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 – 

【问题讨论】:

  • 您是否尝试过使用 mysql 命令的完整路径来运行它?例如:/usr/local/bin/mysql -u $host -D $dbname -u $user -p$password -e $mySqlQuery
  • 另外,我建议您在变量名周围使用双引号,即使用 "$host" 而不仅仅是 $host
  • @RodElias 将变量用双引号括起来有什么区别?

标签: mysql linux bash shell cron


【解决方案1】:

= 和变量名 mySqlQuery 周围不能有空格。

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

【讨论】:

    【解决方案2】:

    你可以这样写一个文件,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 |
    +----+------+------+------+
    $
    

    【讨论】:

      【解决方案3】:

      首先,请确保您的第 5 行看起来像 mySqlQuery="SELECT..."

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

      尝试重新格式化整个 MySQL 查询以适应一行。 (也许是 Heidi,因为它是一个查询,因为这至少可以让您在语法方面避免错误)

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

      优化前的原型设计。在让它飞起来之前让它运行起来。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-10-23
        • 2017-07-25
        • 2011-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-05
        相关资源
        最近更新 更多