我想编写一个bash脚本,该脚本将在给定的但下几天日期的过程数据上运行,我当前的方法是获取UNIX时间戳,并添加价值几天的秒数它,但是我无法正常工作,尚未找到我在网上寻找的东西。
这是我尝试的,我觉得问题是它的字符串不是一个数字,但是我对bash不了解,这是正确的吗?我该如何解决?
today="$(date +'%s')"
tomorrow="$($today + 86400)"
echo "$today"
echo "$tomorrow"
如果您有gnu-date
,那么第二天可以做:
date -d '+1 day'
这个问题的某些答案取决于安装了GNU日期。如果您没有GNU日期,则可以使用-v
选项使用内置的date
命令。
命令
$ date -v+1d
返回明天的日期。
您可以将其与所有标准date
格式选项一起使用,因此
$ date -v+1d +%Y-%m-%d
以Yyyy-mm-dd的格式返回明天的日期。
$(...)
是命令替代。您正在尝试将$today + 86400
作为命令运行。
$((...))
是算术扩展。这就是您要使用的。
tomorrow=$(( today + 86400 ))
另请参见http://mywiki.wooledge.org/arithmeticexpression有关在外壳中进行算术的更多信息。
我希望这能在这里解决您的问题。
date --date 'next day'
设置时区,然后运行date
。
例如。
TZ=UTC-24 date
另外,我会使用perl:
perl -e 'print localtime(time+84600)."n"'
echo $(date --date="next day" +%Y%m%d)
这将输出
20170623
我喜欢
input_date=$(date '+%Y-%m-%d')
tomorrow_date=$(date '+%Y-%m-%d' -d "$input_date + 1 day")
echo "$tomorrow_date"
它以yyyy-mm-dd
$input_date
之后的一天日期 date -d '12:00 today + 1 day'
遵循 @Astrofloyd的领导,鉴于今天是每年这是相关的一天(但这仍然是一个很大的边缘案例),您需要上述,而不仅仅是date -d tomorrow
,tomorrow
已实施为"现在 24小时"实际上,如果下一个日历日期数字中有23个小时,则实际上可能是两个日历日期数字,因为我现在坐在哪里和何时坐着:
❯ date -d today ; date -d tomorrow; date -d '12:00 today +1 day'
Sat Mar 11 23:53:29 PST 2023 # reference
Mon Mar 13 00:53:29 PDT 2023 # what??
Sun Mar 12 12:00:00 PDT 2023 # correct!
您可以在下面尝试
#!/bin/bash
today=`date`
tomorrow=`date --date="next day"`
echo "$today"
echo "$tomorrow"