Linux Shell脚本攻略(1.10)

1.10 获取、设置日期和延时

  • 很多应用程序需要以不同的格式打印日期、设置日期和时间、根据日期和时间执行某项操作。延时通常用于在程序执行过程中提供一段等待时间(比如1秒)。同样的,我们也能够一多种格式打印日期,或者在命令行中设置日期。在类Unix系统中,日期被存储为一个整数,其大小为自世界标准时间起所流逝的秒数。这种计时方式称为纪元时Unix时间

1.10.1 获取、设置时间

  • 以下的程序给出了多种用法:
#!/bin/bash
start=$(date +%s)                              #获取纪元时间
date                                           #输出系统时间
date +%s                                       #打印纪元时间
date --date "Thu Nov 18 08:07:21 IST 2010" +%s #转换成纪元时间
date --date "Jan 20 2001" +%A                  #获取当前星期几
#date "+%d %B %Y"                              #按格式打印日期
date -s "21 June 2009 11:01:22"                #设置日期和时间
end=$(date +%s)                                #获取纪元时间
difference=$((end-start))                      #获取执行时间
echo Time taken to execute commands is $difference seconds.
  • 注意:可以用time来得到脚本的执行时间。

1.10.2 设置延时

  • 编写以循环方式运行的监视脚本时,设置时间间隔是必不可少的。为了在脚本中推迟执行一段时间,可以使用sleep no_of_seconds。
#!/bin/bash
echo -n Count:
tput sc                        #存储光标位置
count=0
while true;
    do
        if [ $count -lt 40 ]
        then
            let count++
            sleep 1;           #休眠1秒钟
            tput rc            #恢复光标位置
            tput ed            #清除当前位置到末尾的内容
            echo -n $count;
        else exit 0;
        fi
    done
  • 以上这段脚本显示了如何使用延时。tput sc存储光标位置,sc为 save cursor的缩写。在每次循环中,通过恢复之前存储的光标位置,在终端中打印出新的count值。tput rc用于恢复光标位置,rc为 recovery cursor的缩写。tput ed清除从当前光标位置到行尾之间的所有内容,使得旧的值被清除,写入新的值,ed可以看作是erase to end 的缩写。在这段程序中,通过sleep 1提供1秒钟的延时。

1.10.3 时间设置、读取时常用的参数

日期内容 格式说明
星期 %a (例如:Sat)
%A (例如:Saturday)
%b (例如:Nov)
%B (例如:November)
%d (例如:31)
固定格式日期(mm/dd/yy) %D (例如:10/18/10)
%y (例如:10)
%Y (例如:2010)
小时 %I或%H (例如:08)
分钟 %M (例如:33)
%S (例如:10)
纳秒 %N (例如:692508515)
Unix纪元时(以秒为单位) %s (例如:1290049486)

1.10.4 参考

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。