在bash中从mysql获取计数val的最简单方法

3 mysql bash

也许我应该使用python或perl,但我不知道任何.

我有4个陈述,我想检查是否有任何错误超过一个小时.我的用户设置好所以我不需要输入mysql用户/通行证.该语句位于mysql_webapp_error_check.sh中

#!/bin/bash
mysql testdb -e "select count(*) from tbl where last_error_date < DATE_SUB(NOW(), INTERVAL 1  HOUR);"
Run Code Online (Sandbox Code Playgroud)

如何让它给我返回值(count(*))而不是打印到屏幕?

然后我会写一个if语句并输出到stdout/err以供cron用来给我发电子邮件(否则我希望脚本保持沉默,所以没有通过电子邮件发送,除非有问题)

小智 7

搜索相同的,-s完全适合我的静音作品.

#!/bin/bash
result=`mysql testdb -s -e "select count(*) from tbl where last_error_date < DATE_SUB(NOW(), INTERVAL 1  HOUR);"`
echo result = .$result.
Run Code Online (Sandbox Code Playgroud)

PS.:在我的mysql Ver 14.14 Distrib 5.1.49中还有一个--batch参数,其中"写入没有转换的字段.与--batch一起使用"所以这里有点偏离主题,但这里应该提到.


gho*_*g74 5

在 bash 中,您使用$()语法。

#!/bin/bash
ret=$(mysql testdb -e "select count(*) from tbl where last_error_date < DATE_SUB(NOW(), INTERVAL 1  HOUR);")
if [[ "$ret" > 0 ]];then
   echo "there is count"
else
   echo "no count"
fi
Run Code Online (Sandbox Code Playgroud)