40 lines
821 B
Plaintext
40 lines
821 B
Plaintext
|
#!/bin/bash
|
||
|
|
||
|
cache_vals(){
|
||
|
echo "$1" > "$3"
|
||
|
echo -n "$2" >> "$3"
|
||
|
}
|
||
|
|
||
|
cached_eval(){
|
||
|
local dir
|
||
|
local a0
|
||
|
local t0
|
||
|
local a1
|
||
|
local t1
|
||
|
dir="/tmp/$1"
|
||
|
a1="$2"
|
||
|
t1="$3"
|
||
|
if [ -f "$dir" ]; then
|
||
|
a0="$(head -n1 "$dir")"
|
||
|
t0="$(tail -n+2 "$dir")"
|
||
|
cache_vals "$a1" "$t1" "$dir"
|
||
|
awk -v a1="$a1" \
|
||
|
-v t1="$t1" \
|
||
|
-v a0="$a0" \
|
||
|
-v t0="$t0" \
|
||
|
'BEGIN {print (a1-a0)/(t1-t0)}'
|
||
|
else
|
||
|
cache_vals "$a1" "$t1" "$dir"
|
||
|
echo -n 0
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
fmt_percent(){
|
||
|
awk "$(printf '%s' \
|
||
|
'{x=$1*100} END { '\
|
||
|
'if (x>=100) printf("%d%% ", x); '\
|
||
|
'else if (x>=10) printf("%.1f%%", x); '\
|
||
|
'else printf("%.2f%%", x)'\
|
||
|
'}')"
|
||
|
}
|