如何在Shell Scripting中进行日期计算?

cfr*_*ich 7 bash shell date-arithmetic

我有一个shell脚本,每晚运行以备份我的EC2站点数据库和html到S3,当它备份文件夹时,它会将日期附加到它以便于查看.但是我希望它能够在3天之前删除相关的备份文件夹.我如何进行计算以获得3天前的日期?

#!/bin/bash
DATE=`date +%m%d%Y`

s3cmd put -r /var/lib/mysql/mydb/ s3://mybucket/mydb-$DATE/
s3cmd put -r /home/ec2-user/public_html/ s3://mybucket/public_html-$DATE/
s3cmd del -r s3://mybucket/mydb-(date 3 days ago)
Run Code Online (Sandbox Code Playgroud)

J.C*_*ski 9

您可以在date命令中使用-d标志:

-d, --date=STRING
     display time described by STRING, not 'now'
Run Code Online (Sandbox Code Playgroud)

所以,只需将日期变量更改为:

DATE=`date +%m%d%Y -d "3 days ago"`
Run Code Online (Sandbox Code Playgroud)