[英]Easiest way to get count val from mysql in 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);"
我如何使它给我返回值(count(*))而不是打印到屏幕上?
然后,我将编写一个if语句,并输出到stdout / err,以供cron通过电子邮件发送给我(否则,我希望脚本保持沉默,因此除非有问题,否则不会发送任何电子邮件)
搜索相同的-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.
PS .:在我的mysql Ver 14.14 Distrib 5.1.49中,还有一个--batch参数,该参数“写字段时不进行转换。与--batch一起使用”,因此此处有些不合时宜,但应在此处提及。
在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
我通常这样做:
var=`mysql -e "SELECT COUNT(*) FROM ...\G" | awk '/COUNT/{print $2}/'`
#!/bin/bash
echo show databases\; | mysql -u root | (while read x; do
echo "$x"
y="$x"
done
echo "$y"
)
就我而言,我只是使用grep -v
从MySQL的返回中排除行打印count(*)
。
所以我得到这样的计数器:
db_name="NAME_DB";
db_user="USER_DB";
db_pwd="PWD_DB";
counter=`mysql -u${db_user} -p${db_pwd} ${db_name} -e "SELECT count(*) FROM my_table WHERE something = '1';" | grep -v "count"`;
echo "Count for request: $counter";
我以这种方式将它用于某些Wordpress东西,从wp-config.php
文件读取数据库信息:
wp_db_infos="wp-config.php";
wp_db=`cat ${wp_db_infos} | grep "DB_NAME" | awk -F ', ' '{print $2}' | awk -F "'" '{print $2}'`;
wp_user=`cat ${wp_db_infos} | grep "DB_USER" | awk -F ', ' '{print $2}' | awk -F "'" '{print $2}'`;
wp_pwd=`cat ${wp_db_infos} | grep "DB_PASSWORD" | awk -F ', ' '{print $2}' | awk -F "'" '{print $2}'`;
img_to_update=`mysql -u${wp_user} -p${wp_pwd} ${wp_db} -e "SELECT count(*) FROM wp_offres WHERE maj_img = '1';" | grep -v "count"`;
local count=$(mysql -u root --disable-column-names --batch --execute "SELECT COUNT(*) FROM mysql.user WHERE user = '$DstDbName'")
if [[ "$count" > 0 ]]
then
fi
--batch-清除无边框的输出--disable-column-names-仅打印具有值的行
没有疯狂的AWK使用:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.