在bash脚本中运行mysql命令

2ic8powd  于 2023-01-12  发布在  Mysql
关注(0)|答案(2)|浏览(188)

我尝试在bash脚本中执行一个mysql命令,但每次我都因为某种原因而失败。我尝试了几种方法,但似乎都不起作用(例如:〈〈查询...;查询)我选择了以下内容,但出现错误:

#!/bin/bash
mysql -utesting -pMypass -hlocalhost -D test DB -e "

SELECT value FROM h6_options

where module=cloud

AND `option`=prefix;"

I get the following error.
ERROR 1064 (42000) at line 3: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '='prefix'' at line 5

Any help is appreciated.
n1bvdmb6

n1bvdmb61#

您正在使用多行SQL语句。这意味着您有两个选项:
1.你可以把所有东西都放到一行里。
1.尝试重新格式化你的脚本以使用EOF标签代替.
1.任何我没想到但这里的聪明人可以考虑的选择...
下面是一个例子:

mysql -u USER -pPASSWORD <<EOF
SQL_QUERY 1
SQL_QUERY 2
SQL_QUERY N
EOF

为了你,我会这么做

mysql -utesting -pMypass -hlocalhost -D test DB <<EOF
SELECT value FROM h6_options
where module=cloud
AND `option`='prefix';
EOF

注意:我不喜欢用EOF这个词...对我来说,我喜欢SQL或QUERY这个词,因为EOF表示文件结束。代码是相同的,所以你可以选择使用这个词:

mysql -utesting -pMypass -hlocalhost -D test DB <<QUERY
SELECT `value` FROM `h6_options`
where `module`='cloud'
AND `option`='prefix';
QUERY

来源:https://www.shellhacks.com/mysql-run-query-bash-script-linux-command-line/

5rgfhyps

5rgfhyps2#

原来问题出在反勾上。为了不评估这行,我不得不避开它们。

<<QUERY
SELECT value FROM h6_options

WHERE \`option\`="prefix"

AND module="cloud"
QUERY

相关问题