mysql - 如何使用 || 检查 mysql 查询是否成功在 shell 脚本中?

标签 mysql linux shell

我不确定在哪里放置我的成功消息函数,它的工作方式如下:

    responseMessage() {
    echo "$1" || echo "$2"
}

我会这样调用它:

#!/bin/bash

password='123456'

responseMessage() {
    echo "$1"|| echo "$2"
}

mysql <<MYSQL 
UPDATE users SET password='${password}' where ID='1';

MYSQL && responseMessage "Successfully updated password." "Failed to update password"

我不确定我应该把函数放在哪里。

将它放在上面示例中的位置,我得到以下内容:

user@DESKTOP:~$ bash testmysql.sh
testmysql.sh: line 12: warning: here-document at line 9 delimited by end-of-file (wanted `MYSQL')
ERROR 1046 (3D000) at line 1: No database selected

我希望 No Database selected 错误,因为它是正确的,但是我希望打印 responseMessage 的第二个参数。

这是显而易见的事情吗? 谢谢

编辑: 还尝试了以下方法:

user@DESKTOP:~$ bash testmysql.sh
ERROR 1046 (3D000) at line 2: No database selected
user@DESKTOP:~$ cat testmysql.sh
#!/bin/bash

responseMessage() {
    echo "$1" || echo "$2"
}

mysql <<MYSQL && responseMessage "Successfully updated password." "Failed to update password"

UPDATE users SET password='123456' where ID='1';

MYSQL

根据 https://github.com/koalaman/shellcheck/wiki/SC1121,我肯定会认为这会起作用

--

我还基于此创建了函数,它实现了我的预期:

user@DESKTOP:~$ bash testmysql.sh
ERROR 1046 (3D000) at line 2: No database selected
Failed to recreate the schemata.
user@DESKTOP:~$ cat testmysql.sh
#!/bin/bash

responseMessage() {
    echo "$1" || echo "$2"
}

mysql <<MYSQL && echo "Successfully recreated the schemata." || echo "Failed to recreate the schemata."

UPDATE users SET password='123456' where ID='1';

MYSQL

最佳答案

我已经开始使用 heredocs 并检查退出代码值。这仍然没有真正解决我想将我的响应变成一个函数的问题,但它比我以前做的要好。

result=$(mysql <<MYSQL

UPDATE users SET password='123456' where ID='1';

MYSQL

)

[ $? = 0 ] && echo "Success" || echo "Failed"

关于mysql - 如何使用 || 检查 mysql 查询是否成功在 shell 脚本中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47110330/

相关文章:

linux - 尝试 'tail' 最新日志文件时出现问题

bash - 如何在 Bash/终端中导出多行环境变量,例如 : RSA Private Key

MySQL优化2个大表的连接

linux - 如何将命令后面的文本分配给 bash 中的变量

python - 在内联 SQL 查询 Python Flask 中使用 DATE_FORMAT 的问题

c++ - 如何从存储在其他文件夹中的 C++ 运行 linux 可执行文件

linux - 当我在 Linux 上编译时在 bash 中设置 tenv

linux - 如何检查应用程序是否在服务器中启动并运行?

mysql - 使用内连接从三个不同的表中选择内容

PHP mySql 未插入数据库