gpt4 book ai didi

mysql - Bash MySQL 查询

转载 作者:可可西里 更新时间:2023-11-01 07:05:02 24 4
gpt4 key购买 nike

我正在尝试在 bash 中针对 MySQL 5.6.35 运行查询,如果值大于或等于 14,则让它退出 0。我可以让它显示我期望的结果,但不退出0.

脚本:

#!/bin/bash

query="SELECT count(*) FROM weekly WHERE date > DATE_SUB(NOW(), INTERVAL 1 WEEK)"
mysql -u root -sN weekly_db -e "$query";

if test $query -ge 14 ; then
echo "OK"
exit 0
else
echo "CRITICAL"
exit 2
fi

这是执行的 bash 脚本:

~# ./check.sh
39
./check.sh: line 6: test: too many arguments
CRITICAL

更新答案:

感谢 codeforester 的帮助,这是我的做法

#!/bin/bash

query="SELECT count(*) FROM weekly WHERE date > DATE_SUB(NOW(), INTERVAL 1 WEEK)"
OUTPUT=$(mysql -u root sN weekly_db -e "$query";)

if ((OUTPUT >= 14)) ; then
echo "OK"
exit 0
else
echo "CRITICAL"
exit 2
fi

输出:

~# ./check.sh
OK

最佳答案

您收到 太多参数 错误,因为未加引号的 $query 计算出许多混淆 test 的单词。我确定您的意图不是测试查询,而是测试查询结果。所以,你需要使用 command substitution捕获 MySQL 的输出:

query_output=$(mysql -u root -sN weekly_db -e "$query")

然后用更适合数字逻辑的(( ... ))测试它:

if ((query_output >= 14)); then
echo "OK"
exit 0
else
echo "CRITICAL"
exit 2
fi

万一 MySQL 失败(连接或查询问题),查询输出将为空,您的逻辑仍然有效 - if 条件将评估为 false 和 else部分将被执行。我想这就是您想要的。


另见:

关于mysql - Bash MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44007395/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com