#! /bin/zsh unit () { # check for 3 args, e.g. # $ unit 5 miles km local args=$# local req_args=3 if (( $args != $req_args )); then wrong-number-of-arguments-message $args $req_args return fi # get args local quant=$1 local src_unit=$2 local dst_unit=$3 # use bc to get significant digits of the input quantity local sig=$(echo "length($quant)" | bc) # compute local quant_dest=$(units -t -d $sig "$quant $src_unit" $dst_unit) # output with unit echo $quant_dest $dst_unit }