Unix - 使用cal命令

时间:2016-04-25 16:58:37

标签: shell unix

我需要从下一个星期六开始创建一个文件的当前日期。例如,在linux上:

date +%Y%m%d -d saturday

此返回 20160430 ,下一个星期六,当前日期为2016年4月25日。那是我想要的。

我在Unix上需要相同的结果(或类似的东西)( SunOS 5.10 )。如果我执行相同的命令,则返回的是当前日期 20160425

还有另一种方法,例如使用命令cal?我试过但是回到第一个星期六。命令:

cal | grep -v 2016 |grep -v Th | head -3 | head -1 |  sed 's|^.*\([0-9]\)$|\1|g'

那么,有一种方法可以使用cal命令从当前日期开始到达下周六吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您可以使用以下命令获取当天:

cal -s | tail -n +2 | grep `date +%d` | cut -d' ' -f 7

打印当月的日历,从星期日开始的周数,剥去年份行,grep是今天的日期行,并获取其第7列,即您的星期六月份日期。

现在这里有一个小脚本来计算其余部分。

#!/bin/sh
TODAY=$(date +%d)
DAY=$(cal -s | tail -n +2 | grep ${TODAY} | cut -d' ' -f 7)
MONTH=$(date +%m)
YEAR=$(date +%Y)

if [[ $DAY -lt $TODAY ]]; then
    # Saturday is next month
    let MONTH=MONTH+1
    if [[ $MONTH -eq 13 ]]; then
        # Saturday is next year
        let YEAR=YEAR+1
    fi  
fi

echo $YEAR$MONTH$DAY