Bash Shell当前日期减去天数

时间:2013-01-19 17:30:43

标签: bash shell datetime debian

我是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并且没有格式化日期时间,所以当我从currentdate变量中减去它时,它显然是不兼容的。

是否有人能够帮助我找到一种方法让它正常工作?

4 个答案:

答案 0 :(得分:19)

尝试

date -d '30 days ago'

应该做debian。

答案 1 :(得分:9)

尝试这样做:

#!/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

答案 2 :(得分:1)

您可以使用以下脚本:

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

答案 3 :(得分:0)

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