确定字符串“a”在“x”小时内是不是相同然后执行“Y”的 Bash 脚本

Posted

技术标签:

【中文标题】确定字符串“a”在“x”小时内是不是相同然后执行“Y”的 Bash 脚本【英文标题】:Bash script that that determine if string "a" is the same for "x" hours then do "Y"确定字符串“a”在“x”小时内是否相同然后执行“Y”的 Bash 脚本 【发布时间】:2021-03-26 21:21:30 【问题描述】:

希望这不是转发。

我试图在我的脚本中插入一行,以确定字符串文件的值在“x”小时(1-2 小时)内是否与发送邮件相同。这是我的逻辑

if [[ "$LAST_VALUE" -eq 1 for "x" hours  ]]; then
    mails -s .....
else
echo "The value has been changed"
fi

问题在于如何为 bash 编写此代码。 很多谢谢!

【问题讨论】:

您的系统是否处于某种循环中?或者这个脚本是如何运行的?它是在 cronjob 中不断地重新运行,还是在循环中不断地运行,或者脚本本身是否包含一个循环?另外,您从哪里获得分配给LAST_VALUE 的值? 它在 cronjob 中运行。它从我的数据库中获取值并将其插入到一些输出中。问题是我如何检查我的 $LAST_VALUE" (这是一个输出)如果它是 -eq 到 "1" 超过 "x" 然后做 "y" 【参考方案1】:

从您的 cmets 中,我了解到您可以通过某些数据库查询或某些外部命令来提取 LAST_VALUE 的值。让我们称之为db_query。我的建议是有一个包含此值及其更改时间的外部文件。

假设我们有文件:/tmp/dbquery.txt 并包含如下行:

 key epoch value

那么我们可以有如下脚本:

#!/usr/bin/env bash

# read old value
read -r key old_epoch old_value < /tmp/dbquery.txt

# query and store new values
last_value="$(dbquery)"
last_epoch="$(date "+%s")"

if [[ "$last_value" == "$old_value" ]]; then
   echo $key $old_epoch $old_value > /tmp/dbquery.txt
else        
   echo $key $last_epoch $last_value > /tmp/dbquery.txt
fi

if [[ "$last_value" == 1 ]] && (( last_epoch - old_epoch > 3600 )); then
   do stuff
fi

【讨论】:

以上是关于确定字符串“a”在“x”小时内是不是相同然后执行“Y”的 Bash 脚本的主要内容,如果未能解决你的问题,请参考以下文章

vbscript 了解批次是否在过去X小时内执行过

在 Plotwidget 内滚动/缩放

在标签页子按钮单击上执行 A,在按下相同按钮 x 秒时执行 B

如何确定是不是在 Mac OS X 上剥离了二进制文件?

确定日期是不是在 sqlCE 中的 2 个日期内

Python 3.X |确定坐标是不是位于矩形内