在Linux CLI上,有没有办法得到当月的星期几? 也许还有另一种方法来获得这个简单的(如date
)命令? 假设第一天到第七天是第一周,第八天到第十四天是第二周,依此类推。
date
命令不能在内部完成,所以你需要一些外部算术。
echo $((($(date +%-d)-1)/7+1))
编辑:在%和d之间添加了一个减号
你可以使用这个:
星期一第一个星期
WEEKNUMBER=$(( 1 + $(date +%V) - $(date -d "$(date -d "-$(($(date +%d)-1)) days")" +%V) ))
周日第一周的数据
WEEKNUMBER=$(( 1 + $(date +%U) - $(date -d "$(date -d "-$(($(date +%d)-1)) days")" +%U) ))
尝试这个:
d=`date +%d` ; m=`date +%m` ; y=`date +%Y` ; cal $m $y | sed -n "3,$ p" | sed -n "/$d/{=;q;}"
如果您在任务中接受外部工具,请尝试使用dateutils 。 这是2012年4月27日是2012年4月的第四个星期五,这与您的星期定义恰好相符。 要获得该号码使用:
dconv 2012-04-27 -f %c => 04
%c
(count)是月份内发生的格式说明符。 或者更酷的尝试
dconv today -f '%cth %a in %b %Y' => 1st Wed in Sep 2012
简化Victor Sanchez的解决scheme:
expr 1 + $(date +%V) - $(date +%V -d $(date +%Y-%m-01))
如果你想要星期天开始的话,用%Ureplace%V。
顺便说一句:不得不使用expr而不是$((…)),因为后者似乎不喜欢带前导零的数字。