我想运行一个每天运行的bash脚本并检查当前日期以查看它是否是该月的倒数第二天以及是否执行某些操作。
答案 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"
让我们分析一下:
date --date="$MAGIC -2 days"
如果不是$MAGIC
我们可以获得下个月的第一天,GNU日期--date
功能可以帮助我们:尝试使用date --date="2016-08-01 -2 days"
$MAGIC
返回的内容代替date --date "next month" +'%Y-%m-01'
:这为我们提供下个月的第一个,再次使用GNU日期的--date
选项$( ... )
答案 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"