2015-10-28 114 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