figlet字符日期刷新

!/bin/bash

function timediff() {
# time format:date +"%s.%N", such as 1502758855.907197692
start_time=$1
end_time=$2

start_s=${start_time%.*}
start_nanos=${start_time#*.}
end_s=${end_time%.*}
end_nanos=${end_time#*.}

# end_nanos > start_nanos?
# Another way, the time part may start with 0, which means
# it will be regarded as oct format, use "10#" to ensure
# calculateing with decimal
if [ "$end_nanos" -lt "$start_nanos" ];then
end_s=$(( 10#$end_s - 1 ))
end_nanos=$(( 10#$end_nanos + 10**9 ))
fi

# get timediff
time=$(( 10#$end_s - 10#$start_s )).`printf "%03d\n" $(( (10#$end_nanos - 10#$start_nanos)/10**6 ))`
echo $time
}

# 退出时清空屏幕
trap "clear;exit" 2
# 清空首屏
clear
# 隐藏光标
echo -e "\033[?25l"

diff=0
str=`date +'%Y / %m / %d %H : %M : %S'`
while true
do
figlet -w 120 -f big -c "${str}"

start=$(date +'%s.%N')
str=`date +'%Y . %m . %d - %H : %M : %S'`
echo -ne "$report"
echo -ne "\033[1;1H"
a=`timediff $start $end`
b=1
end=$(date +'%s.%N')

sleep `awk 'BEGIN{print "'$end'" - "'$start'"}'`
done