在脚本中设置昨天的日期为周一

在脚本中设置昨天的日期为周一

我正在编写一个脚本,周一至周五每天早上检查是否存在备份文件。这些备份文件保存在周一至周五每天结束时,仅命名为

02_10_15

有一个问题,如果我周一运行我的脚本说

09_10_15

它不会找到该文件,因为文件名是

06_10_15

而不是昨天

08_10_15

请在下面找到我的日期代码,

#Create variables
yday=$(date --date yesterday +"%d_%m_%y")
#yday="02_10_15"
FileName=$(date --date yesterday +"%Y%m%d")

我怎样才能获得上周五周一特别的日期。

答案1

unset mon
[ $(date +%u) -eq 1 ] && mon='Fri'
yday=$(date --date="last ${mon}day" +"%d_%m_%y")

因此,如果是星期一date +%u生产,1那么mon变量将设置Fri- 日期的字符串将是last Friday.否则它将保持未设置last day状态mon(空)

答案2

根据信息页面,GNUdate接受您可以使用的其他形式。这是一个例子:

FileName=$(date --date '1 day ago' +"%Y%m%d")
FileName=$(date --date 'last Friday' +"%Y%m%d")

但是,它似乎不支持“最后一个工作日”或“一周的最后一天”等变体。如果您的脚本必须仅在工作日(周一至周五)运行,或者考虑到节假日,则需要多行来完成此任务。

相关内容