2015-10-28 115 views
0

我有即时通讯装入变量使用计算和显示日期的差异

a=`date +%s` 
b=`date +%s` 

两个日期,我想知道时间如差00:00:10等等,我这样做是使用

计算之间的区别
diff=$((b-a)) 
echo "$((diff/3600)):$(((diff/60)%60)):$((diff%60))" 

但输出是0:0:07,我怎么能将它转换成2点=在00:00:07?

回答

0

如果字符串的长度为1,则与增值零

hour=$((diff/3600)) 
min=$(((diff/60)%60)) 
sec=$((diff%60)) 
[[ ${#hour} == 1 ]] && hour="0$hour" || hour="$hour" 
[[ ${#min} == 1 ]] && min="0$min" || min="$min" 
[[ ${#sec} == 1 ]] && sec="0$sec" || sec="$sec" 
echo "$hour:$min:$sec" 

输出:

  00:00:16 
+0

如果我得到这个正确的,这是语法测试命令,但到底是什么$ {#小时}(hasthag)和&&和||操作数在unix中意味着什么?看起来像其他语言不一样=和,或者 – Darlyn

+1

#将返回变量的长度。 &&,||是三元运算符的简写形式,如if ... else – loganaayahee

+0

$ {#varname}是变量的长度,&&,||用于bash中三进制运算符的排序形式。如果条件为真,则返回值为0,否则返回值 – loganaayahee