昨天在Bash获得

时间:2012-02-02 16:49:11

标签: bash

昨天在Bash中有更简单的方法吗?此代码(用于增量焦油)

mod_time=""

if [ ! -z ${1} ]; then
    if [ "${1}" = "i" ]; then

        this_month=`date +%m`

        this_year=`date +%y`

        last_day=`date +%d`

        # Subtract one from today's day, to get yesterday.

        if [ "${last_day:0:1}" = "0" ]; then
            if [ "${last_day:1:1}" > "1" ]; then
                last_day=$[$((${last_day:1:1})) - 1]
            fi
        else
            last_day=$[$(($last_day)) - 1]
        fi

        # zero pad if necessary

        if [ 10 -gt $last_day ]; then
            last_day="0$last_day"
        fi

        mod_time=" --newer-mtime $this_month/$last_day/$this_year "
    fi
fi

有一些问题,比如计算第0天,也没有在月底做正确的事情。我不想建立闰年计算,并且想知道在Bash中是否有一种简单的方法可以做到这一点。如果没有,我将使用Clojure或Python。

4 个答案:

答案 0 :(得分:4)

也许我错过了你的观点,但为什么不呢:

$ date -d yesterday
Wed Feb  1 11:53:12 EST 2012

(可能是一个GNU扩展,所以没有承诺你会拥有它)。如果你这样做,我会说它更容易:)。

答案 1 :(得分:3)

这可能会有所帮助

 date -d "yesterday" +%Y%m%d

返回

 20120202

答案 2 :(得分:2)

date -d yesterday

答案 3 :(得分:2)

对我而言,这似乎有点短:

date --date "1 day ago"