Bash Shell当前日期减去天数

Jim*_*mmy 10 bash shell debian datetime

我是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
Run Code Online (Sandbox Code Playgroud)

我被卡住的地方是我的"天"只是数字30并且没有日期时间格式化,所以当我从当前日期变量减去它时,它显然是不兼容的.

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

Mic*_*ker 21

尝试

date -d '30 days ago'
Run Code Online (Sandbox Code Playgroud)

应该做debian.


Gil*_*not 10

试着这样做:

#!/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"
Run Code Online (Sandbox Code Playgroud)

看到 info coreutils 'date invocation' | less +/28.7\ Relative\ items\ in\ date\ strings