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 参考
时间: 2024-12-29 04:32:19