Bash脚本,获得当月的倒数第二天

时间:2016-07-23 16:23:42

标签: bash date scripting

我想运行一个每天运行的bash脚本并检查当前日期以查看它是否是该月的倒数第二天以及是否执行某些操作。

3 个答案:

答案 0 :(得分:3)

使用GNU日期

today=$(date +%Y-%m-%d)
next_to_last=$( date -d "$(date +%Y-%m-01) + 1 month - 2 days" +%Y-%m-%d )

if [[ $today == $next_to_last ]]; then
    echo "it is the 2nd last day of the month"
fi

“内部”日期调用返回当前年份和月份,我们硬编码“01”表示当天=>  这个月的第一天。我们加1个月,然后减去2天。

答案 1 :(得分:1)

您可以使用此调用执行此操作:

date --date="$(date --date "next month" +'%Y-%m-01') -2 days"

让我们分析一下:

  1. 外层:date --date="$MAGIC -2 days"如果不是$MAGIC我们可以获得下个月的第一天,GNU日期--date功能可以帮助我们:尝试使用date --date="2016-08-01 -2 days"
  2. 内层:我们使用$MAGIC返回的内容代替date --date "next month" +'%Y-%m-01':这为我们提供下个月的第一个,再次使用GNU日期的--date选项
  3. 您可以使用两行或使用$( ... )
  4. 命令替换

答案 2 :(得分:0)

如果您没有GNU日期,可以执行以下操作:

set -- $(date "+%d %m %Y")
cal ${2} ${3} | nawk '{NF&&n=($NF-2)};END{exit(n==d)?0:1}' d=${1}
((!$?)) && echo "do certain things"