bash中时间相关函数的应用

前端之家收集整理的这篇文章主要介绍了bash中时间相关函数的应用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

上篇总结了一些常用的函数,这篇写一个经常会用到的,与时间有关的应用场景:
给一个起始时间和结束时间,遍历中间的每一天,用于文件名组成部份。

直接上代码

#!/bin/bash@H_403_8@
# iterate day between begindate and enddate@H_403_8@
# @H_403_8@

get_seconds_by_date@H_403_8@@H_403_8@()
{
    if@H_403_8@ [ "$1@H_403_8@"@H_403_8@ ]; then@H_403_8@
        date -d@H_403_8@ "$1@H_403_8@"@H_403_8@ +%s
    else@H_403_8@
        date +%s
    fi@H_403_8@
}

get_date_by_seconds@H_403_8@@H_403_8@()
{
    date -d@H_403_8@ "1970-01-01 UTC $1@H_403_8@ seconds"@H_403_8@ +%Y%m%d
}

beginsec=$(get_seconds_by_date "$1@H_403_8@"@H_403_8@)
endsec=$(get_seconds_by_date "$2@H_403_8@"@H_403_8@)
curr=$beginsec@H_403_8@

while@H_403_8@ [ $curr@H_403_8@ -le $endsec@H_403_8@ ];
do@H_403_8@
    get_date_by_seconds "$curr@H_403_8@"@H_403_8@
    curr=$((curr+24@H_403_8@*60@H_403_8@*60@H_403_8@))
done@H_403_8@

测试命令

root@ADT:~# bash test.sh 2017-08-30 2017-09-30@H_403_8@
20170830@H_403_8@
20170831@H_403_8@
20170901@H_403_8@
20170902@H_403_8@
20170903@H_403_8@
20170904@H_403_8@
20170905@H_403_8@
20170906@H_403_8@
20170907@H_403_8@
20170908@H_403_8@
20170909@H_403_8@
20170910@H_403_8@
20170911@H_403_8@
20170912@H_403_8@
20170913@H_403_8@
20170914@H_403_8@
20170915@H_403_8@
20170916@H_403_8@
20170917@H_403_8@
20170918@H_403_8@
20170919@H_403_8@
20170920@H_403_8@
20170921@H_403_8@
20170922@H_403_8@
20170923@H_403_8@
20170924@H_403_8@
20170925@H_403_8@
20170926@H_403_8@
20170927@H_403_8@
20170928@H_403_8@
20170929@H_403_8@
20170930@H_403_8@
#另一个简单的方法@H_403_8@
#! /bin/sh@H_403_8@
date=`date -d@H_403_8@ "+0 day $1@H_403_8@"@H_403_8@ +%Y%m%d`
enddate=`date -d@H_403_8@ "+1 day $2@H_403_8@"@H_403_8@ +%Y%m%d`

echo@H_403_8@ "------------------------------"@H_403_8@
echo@H_403_8@ "date=$date@H_403_8@"@H_403_8@
echo@H_403_8@ "enddate=$enddate@H_403_8@"@H_403_8@
echo@H_403_8@ "------------------------------"@H_403_8@

while@H_403_8@ [[ $date@H_403_8@ < $enddate@H_403_8@  ]]
do@H_403_8@
        echo@H_403_8@ $date@H_403_8@
        date=`date -d@H_403_8@ "+1 day $date@H_403_8@"@H_403_8@ +%Y%m%d`

done@H_403_8@

执行:./test.sh 2014@H_403_8@-06@H_403_8@-01@H_403_8@ 2014@H_403_8@-06@H_403_8@-06@H_403_8@

猜你在找的Bash相关文章