Bash 在shell脚本中定义一个增量变量,该变量在每个cronjob上递增
我在论坛上搜索过,但没有找到。我们可以定义一个变量,它只在每次运行cronjob时递增吗 例如: 我有一个每5分钟运行一次的脚本,所以我需要一个基于cron运行的递增变量 如果作业连续运行了5分钟。所以脚本执行了6次,所以我的计数器变量现在应该是6 我期待bash/shell的出现 如果问题重复,请道歉 尝试:Bash 在shell脚本中定义一个增量变量,该变量在每个cronjob上递增,bash,shell,unix,cron,Bash,Shell,Unix,Cron,我在论坛上搜索过,但没有找到。我们可以定义一个变量,它只在每次运行cronjob时递增吗 例如: 我有一个每5分钟运行一次的脚本,所以我需要一个基于cron运行的递增变量 如果作业连续运行了5分钟。所以脚本执行了6次,所以我的计数器变量现在应该是6 我期待bash/shell的出现 如果问题重复,请道歉 尝试: ((count+1)) 您可以这样做: 创建两个脚本:counter.sh和increment_counter.sh 在cron作业中添加执行increment\u counter.s
((count+1))
您可以这样做:
increment\u counter.sh
/path/to/counter.sh
进入/etc/profile
或/etc/bash.bashrc
或declare -i COUNTER
COUNTER=1
export COUNTER
#!/bin/bash
echo "COUNTER=\$COUNTER+1" >> /path/to/counter.sh
增量_counter.sh
declare -i COUNTER
COUNTER=1
export COUNTER
#!/bin/bash
echo "COUNTER=\$COUNTER+1" >> /path/to/counter.sh
在其中运行命令的shell已退出;它设置的任何变量都已消失。不能为此目的使用变量 您需要的是某种永久性数据存储。这可能是一个数据库,或远程网络服务,或各种各样的东西,但到目前为止,最简单的解决方案是将值存储在磁盘上某个位置的文件中。在脚本启动时读入该文件,然后写出递增的值
您应该考虑如果文件丢失该怎么办,如果脚本的多个副本同时运行会发生什么情况,并确定这些情况是否是您所关心的。如果是,您需要在脚本中分别添加适当的错误处理和锁定。环境变量不起作用。使用文件。如果不关心计数器的实际值,只需从
日期+%s
中获取当前时间戳,然后除以300(5分钟内的秒数)。这将在每次运行时为您提供一个递增的值。如果您确实关心实际值,请减去一个常量值。否则,按照@thatotherguy的建议,在每次运行时保存并重新加载一个文件