Bash Shell当前日期减去天数



我是bash和shell的新手,但我正在运行debian安装,我正试图制作一个脚本,可以找到过去的日期,而无需安装任何额外的包。从教程我已经到了这个阶段:

#!/bin/sh
#
# BACKUP DB TO S3
#
# VARIABLES
TYPE="DATABASE"
DAYS="30"
# GET CURRENT DATETIME
CURRENTDATE="$(date +%Y%m%d%H%M%S)"
# GENERATE PAST DATE FROM DAYS CONTSTANT
OLDERDATE=`expr $CURRENTDATE - $DAYS'
# CALL PYTHON SCRIPT WITH OLDERDATE ARGUMENT
python script.py $OLDERDATE

我被卡住的地方是我的"天"只是数字30,而不是datetime格式的,所以当我从currentdate变量中减去它时,它显然是不兼容的。

有谁能好心帮我找个方法让它正常工作吗?

Try

date -d '30 days ago'

试着这样做:

#!/bin/sh
#
# BACKUP DB TO S3
#
# VARIABLES
TYPE="DATABASE"
DAYS="30"
# GET CURRENT DATETIME
CURRENTDATE="$(date +%Y%m%d%H%M%S)"
# GENERATE PAST DATE FROM DAYS CONSTANT
OLDERDATE="$(date "+%Y%m%d%H%M%S" -d "$DAYS days ago")"
# CALL PYTHON SCRIPT WITH OLDERDATE ARGUMENT
python script.py "$OLDERDATE"

参见info coreutils 'date invocation' | less +/28.7 Relative items in date strings

您可以使用以下脚本:

#!/bin/bash
days=73
while [ ${days} -ge 0 ]; do
    date -d "${days} days ago" +'%F'
    days=$((days-1))
done

您可以修改python脚本,这样您就不会依赖于date的特定实现

相关内容

  • 没有找到相关文章

最新更新