我不确定在哪里放置我的成功消息函数,它的工作方式如下:
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/