![如何连续运行 bash 脚本检查值是否已更改?](https://linux22.com/image/60219/%E5%A6%82%E4%BD%95%E8%BF%9E%E7%BB%AD%E8%BF%90%E8%A1%8C%20bash%20%E8%84%9A%E6%9C%AC%E6%A3%80%E6%9F%A5%E5%80%BC%E6%98%AF%E5%90%A6%E5%B7%B2%E6%9B%B4%E6%94%B9%EF%BC%9F.png)
我有一个 PHP 脚本getAnalytics.php
,调用该脚本时会返回一个特定的整数值。我希望能够调用getAnalytics.php
一个 bash 脚本,该脚本每 30 秒连续运行一次检查 PHP 脚本,以查看返回的值是否已更改。
我该怎么做呢?或者您会推荐一种不同的方法吗?
答案1
如果你没有更好的指示(例如查看一些日志文件)来获取可能更改的通知,只需在 bash 中无限循环:
res=
while [ 1 ] ; do
old_result=$res
res=$(/path/to/getAnalytics.php)
echo "result: $res"
if [ "$old_result" != "$res" ]; then
echo "result has changed"
fi
sleep 30
done
您需要Ctrl+C才能退出。如果您想在脚本打印的特定值(例如 42)上退出,请res
在开始时设置为某个虚拟值,然后测试[ "$res" != "42" ]
答案2
如果您可以将运行之间的要求放宽到一分钟,则可以通过 cron 条目轻松完成此操作。此过程的优点是程序不会简单地闲置(并可能死掉)导致您错过某些数据或窗口。在重新启动之间也不需要特殊的步骤来启动它。