date 命令根据给定变量计算一个月前

date 命令根据给定变量计算一个月前

如果没有参数我可以生成当前月份和年份(012021)和上个月(122020)与“-d '上个月'”选项。如果我输入像“2019年1月1日“我可以处理$currentmonth(012019) 但不是 $pastmonth 变量。有什么办法可以解决这个问题吗?

#!/bin/bash
if [ -z "$1" ] ;then
currentmonth=`date "+%m%Y"`
pastmonth=`date "+%m%Y" -d 'last month'`
echo $currentmonth
echo $pastmonth
else
currentmonth=`date +%m%Y --date="$1"`
pastmonth=?
echo $currentmonth
echo $pastmonth
fi

答案1

您可以通过在日期中“添加”“上个月”来做到这一点:

date +%m%Y -d "01/01/2019+last month"

提防date的解析,对于带有斜杠的日期,它采用美国格式。

相关内容