diff options
Diffstat (limited to 'decperc')
-rwxr-xr-x | decperc | 30 |
1 files changed, 30 insertions, 0 deletions
@@ -0,0 +1,30 @@ +#!/usr/bin/zsh + +dec_into_perc () { + dec="$1" + # duplicating code, don't care + if echo "$dec" | grep -qE '^(-?[0-9]+\.[0-9]+|-?[0-9]|\.[0-9]+)$'; then + percent="$( echo "$dec * 100" | bc -l )" + echo "${percent}%" + else + echo "Error: not a decimal number" >&2 + exit 1 + fi +} + +perc_into_dec () { + perc="$1" + # duplicating code, don't care + if echo "$perc" | grep -qE '^(-?[0-9]+\.[0-9]+%|-?[0-9]+%|\.[0-9]+%)$'; then + dec="{$perc%?}" + dec="$( echo "$dec / 100" | bc -l )" + echo "$dec" + else + echo "Error: not a percent" >&2 + exit 1 + fi +} + +echo "$1" | grep -qE '^(-?[0-9]+\.[0-9]+|-?[0-9]|\.[0-9]+|-?[0-9]+\.[0-9]+%|-?[0-9]+%|\.[0-9]+%)$' && + len=${#1} && + [[ "${1:len-1:1}" == "%" ]] && perc_into_dec "$1" || dec_into_perc "$1" |