Mengusulkan solusi ini yang menggunakan bc
:
current="$(date +%s.%N)" #current date, precise to nanoseconds
old="$(date +%s.%N -d "$(sh some_script_that_gives_a_date.sh)")" #convert output to ns too
diff=$(echo "$current-$old" |bc)
date +%s.%N -d $1
mengambil tanggal arbitrer dan mengonversinya ke format tertentu (seperti dalam kasus ini +%s.%N
, sebuah float
detik) . Ketahuilah bahwa
-d bukan bagian dari tanggal POSIX. [Tapi] selama [Anda] tidak bekerja pada distribusi seperti Solaris ([OP] telah menandainya dengan linux dan bukan unix) [Anda] seharusnya bagus. :)
(komentar oleh jaypal singh pada jawaban ini)
Untuk mengubahnya kembali menjadi dapat dibaca manusia, Anda dapat menggunakan:date $2 -d @0$diff #Pad diff with leading zero
Dimana $2
lagi adalah format tanggal lihat misalnya di sini
let DIFF=(`date +%s -d 20120203`-`date +%s -d 20120115`)/86400
echo $DIFF
bagaimana cara menggunakan perintah Urutkan Linux untuk mengurutkan file teks menurut kolom ke-4, urutan numerik?
Apakah perintah UNIX `time` cukup akurat untuk benchmark?