2016-07-23 90 views

回答

2

使用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天。

+0

謝謝你這樣做的伎倆! –

1

你可以用這個調用做到這一點:

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

讓我們分析部分:

  1. 外層:date --date="$MAGIC -2 days"如果不是$MAGIC我們可以得到下個月,GNU的第一天日期​​功能將幫助我們:與date --date="2016-08-01 -2 days"
  2. 一起嘗試它內層:而不是$MAGIC我們使用由返回的內容:這給我們的第一下個月,再次使用GNU日期​​選項
  3. ,你既可以使用兩行或使用命令替換與$(...)
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" 
相關問題