我想编写一个bash脚本,该脚本将在给定但过程数据上运行,并且具有下一天的日期,我当前的方法是获取unix时间戳并为其添加一天的秒数,但我无法使其工作,还没有找到我在网上寻找的东西。
这是我尝试过的,我觉得问题是它的字符串不是数字,但我不太了解bash以确定,这是正确的吗?以及如何解决这个问题?
today="$(date +'%s')"
tomorrow="$($today + 86400)"
echo "$today"
echo "$tomorrow"
答案 0 :(得分:7)
如果您有gnu-date
,那么第二天就可以做到:
date -d '+1 day'
答案 1 :(得分:4)
$(...)
是命令替换。您正尝试将$today + 86400
作为命令运行。
$((...))
是算术扩展。这就是你想要使用的。
tomorrow=$(( today + 86400 ))
另请参阅http://mywiki.wooledge.org/ArithmeticExpression了解有关在shell中进行算术运算的更多信息。
答案 2 :(得分:4)
此问题的一些答案取决于是否安装了GNU日期。如果您没有GNU日期,则可以使用带有date
选项的内置-v
命令。
命令
$ date -v+1d
返回明天的日期。
您可以将它与所有标准date
格式选项一起使用,所以
$ date -v+1d +%Y-%m-%d
以YYYY-MM-DD格式返回明天的日期。
答案 3 :(得分:1)
我希望这可以解决您的问题here。
date --date 'next day'
答案 4 :(得分:0)
设置您的时区,然后运行date
。
E.g。
TZ=UTC-24 date
或者,我使用perl:
perl -e 'print localtime(time+84600)."\n"'
答案 5 :(得分:0)
echo $(date --date="next day" +%Y%m%d)
这将输出
20170623
答案 6 :(得分:-1)
您可以尝试以下
#!/bin/bash
today=`date`
tomorrow=`date --date="next day"`
echo "$today"
echo "$tomorrow"