Navrhujeme toto řešení, které používá 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
vezme libovolné datum a převede ho do daného formátu (jako v tomto případě +%s.%N
, float
sekund) . Uvědomte si to
-d není součástí data POSIX. [Ale] dokud [nepracujete] na distribucích jako Solaris ([OP] to označilo linux a ne unix), [měli byste] být dobří. :)
(komentář od jaypal singh k této odpovědi)
Chcete-li jej převést zpět na čitelný pro člověka, můžete použít:date $2 -d @0$diff #Pad diff with leading zero
Kde $2
opět je formát data viz například zde
let DIFF=(`date +%s -d 20120203`-`date +%s -d 20120115`)/86400
echo $DIFF
jak použít linuxový příkaz Sort k seřazení textového souboru podle 4. sloupce, číselného pořadí?
Je příkaz UNIX `time` dostatečně přesný pro benchmarky?