Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于日期的bash脚本计数器算法_Bash - Fatal编程技术网

基于日期的bash脚本计数器算法

基于日期的bash脚本计数器算法,bash,Bash,我想知道在bash中基于日期实现计数器的最佳方法。例如,如果今天的日期是5-26-17,则每次运行bash脚本时(从0开始),计数器都会递增。因此,如果脚本运行24次(每小时一次),计数器将为24。现在我们转到第二天5-27-17,我想将计数器重置为0,并在每次运行脚本时开始递增 我用bash脚本解决这个问题的第一个想法是运行date实用程序并基于当前日期创建一个文件。创建文件后,使用该文件跟踪计数器值。有没有更好的方法来实现这一点 我试图做的基本上就是使用键值对。键是今天的日期,值是脚本运行的

我想知道在bash中基于日期实现计数器的最佳方法。例如,如果今天的日期是5-26-17,则每次运行bash脚本时(从0开始),计数器都会递增。因此,如果脚本运行24次(每小时一次),计数器将为24。现在我们转到第二天5-27-17,我想将计数器重置为0,并在每次运行脚本时开始递增

我用bash脚本解决这个问题的第一个想法是运行date实用程序并基于当前日期创建一个文件。创建文件后,使用该文件跟踪计数器值。有没有更好的方法来实现这一点

我试图做的基本上就是使用键值对。键是今天的日期,值是脚本运行的次数

我的解决方案:

# Create a counter file to keep track of how many times the script
# was run each day.
  DATE_COUNTER_FILE=$(date "+%m-%d-%Y").counter
  COUNTER=1;
  if [ -f $DATE_COUNTER_FILE ]; then
    COUNTER=`cat $DATE_COUNTER_FILE`
    ((COUNTER+=1))
    echo $COUNTER > $DATE_COUNTER_FILE
  else
    touch $DATE_COUNTER_FILE
    echo $COUNTER > $DATE_COUNTER_FILE
  fi;

不确定这样做是否对您有帮助:

#!/bin/bash
if [$day == ""]; then day=$(date +"%d"); fi
if [$month == ""]; then month=$(date +"%m"); fi
if [$year == ""]; then year=$(date +"%Y"); fi
# ...
# DO YOUR STUFF WITH NUMBERS
# ...
export day=${day}
export month=${month}
export year=${year}
第一部分将日期数据存储在变量中,但仅当变量尚未设置时。然后用简单的数学做你想做的事情(为此使用expr)。然后将变量导出为环境变量,以便在下次执行脚本时可以找到它们

如果在关机或重新启动后仍需要保持数据的活动状态,则需要将数据导出到文件

如果需要每天重置数据,可以添加一个变量(我今天称之为变量)并使脚本如下所示:

#!/bin/bash
if ([ "$today" != "" ] && [ "$today" != $(date +"%d") ]); then day="" && month="" && year=""; fi
if [ "$day" == "" ]; then day=$(date +"%d") && today=$(date +"%d"); fi
if [ "$month" == "" ]; then month=$(date +"%m"); fi
if [ "$year" == "" ]; then year=$(date +"%Y"); fi
# ...
# DO YOUR STUFF WITH NUMBERS
# ...
export day=${day}
export month=${month}
export year=${year}

这样,脚本将每天重置变量$day$month和$year。

不确定这样做是否对您有帮助:

#!/bin/bash
if [$day == ""]; then day=$(date +"%d"); fi
if [$month == ""]; then month=$(date +"%m"); fi
if [$year == ""]; then year=$(date +"%Y"); fi
# ...
# DO YOUR STUFF WITH NUMBERS
# ...
export day=${day}
export month=${month}
export year=${year}
第一部分将日期数据存储在变量中,但仅当变量尚未设置时。然后用简单的数学做你想做的事情(为此使用expr)。然后将变量导出为环境变量,以便在下次执行脚本时可以找到它们

如果在关机或重新启动后仍需要保持数据的活动状态,则需要将数据导出到文件

如果需要每天重置数据,可以添加一个变量(我今天称之为变量)并使脚本如下所示:

#!/bin/bash
if ([ "$today" != "" ] && [ "$today" != $(date +"%d") ]); then day="" && month="" && year=""; fi
if [ "$day" == "" ]; then day=$(date +"%d") && today=$(date +"%d"); fi
if [ "$month" == "" ]; then month=$(date +"%m"); fi
if [ "$year" == "" ]; then year=$(date +"%Y"); fi
# ...
# DO YOUR STUFF WITH NUMBERS
# ...
export day=${day}
export month=${month}
export year=${year}

这样,脚本将每天重置变量$day$month和$year。

很抱歉,StackOverflow旨在帮助人们修复编程代码。对程序设计提示、教程、研究、工具、建议、库和代码的请求是离题的。在这里发布更多Qs之前,请阅读、、和。发布示例输入,或起始值,处理相同输入后的预期值,任何试图解决问题的代码和人员都可能帮助您改进它。Good Lucky.BTW,您将遇到的主要问题是文件锁定——您所建议的逻辑的一个简单实现很容易受到竞争条件的影响。有关使用
flock
进行锁定的示例,请参见。否则,您通常已经走上了正确的道路。我可以在这里询问哪些主题一个特定的编程问题(检查)-一个软件算法(检查)-程序员常用的软件工具(检查,我在寻找一个可能的*NIX实用程序)一个软件开发特有的实用的、可回答的问题(检查),那么你就来问你的问题了!抱歉,StackOverflow是关于帮助人们修复编程代码的。对程序设计提示、教程、研究、工具、建议、库和代码的请求是离题的。在这里发布更多Qs之前,请阅读、、和。发布示例输入,或起始值,处理相同输入后的预期值,任何试图解决问题的代码和人员都可能帮助您改进它。Good Lucky.BTW,您将遇到的主要问题是文件锁定——您所建议的逻辑的一个简单实现很容易受到竞争条件的影响。有关使用
flock
进行锁定的示例,请参见。否则,您通常已经走上了正确的道路。我可以在这里询问哪些主题一个特定的编程问题(检查)-一个软件算法(检查)-程序员常用的软件工具(检查,我在寻找一个可能的*NIX实用程序)一个软件开发特有的实用的、可回答的问题(检查),那么你就来问你的问题了!