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?
我有即时通讯装入变量使用计算和显示日期的差异
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?
如果字符串的长度为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
如果我得到这个正确的,这是语法测试命令,但到底是什么$ {#小时}(hasthag)和&&和||操作数在unix中意味着什么?看起来像其他语言不一样=和,或者 – Darlyn
#将返回变量的长度。 &&,||是三元运算符的简写形式,如if ... else – loganaayahee
$ {#varname}是变量的长度,&&,||用于bash中三进制运算符的排序形式。如果条件为真,则返回值为0,否则返回值 – loganaayahee