given a number, shows it in comma-separated form.expects dd and td to be instantiated. instantiates nicenum. or, if a second arg is specified, the output is echoed to stdout.
废话不多说,首先是
#!/bin/sh # nicenumber -- given a number, shows it in comma-separated form. # expects dd and td to be instantiated. instantiates nicenum # or, if a second arg is specified, the output is echoed to stdout. nicenumber() { # note that we assume that '.' is the decimal separator in # the input value to this script. the decimal separator in the output value is # '.' unless specified by the user with the -d flag integer=$(echo $1 | cut -d. -f1) # left of the decimal decimal=$(echo $1 | cut -d. -f2) # right of the decimal if [ $decimal != $1 ]; then # there's a fractional part, so let's include it. result="${dd:="."}$decimal" fi thousands=$integer while [ $thousands -gt 999 ]; do remainder=$(($thousands % 1000)) # three least significant digits while [ ${#remainder} -lt 3 ] ; do # force leading zeros as needed remainder="0$remainder" done thousands=$(($thousands / 1000)) # to left of remainder, if any result="${td:=","}${remainder}${result}" # builds right to left done nicenum="${thousands}${result}" if [ ! -z $2 ] ; then echo $nicenum fi } dd="." # decimal point delimiter, to separate integer and fractional values td="," # thousands delimiter, to separate every three digits while getopts "d:t:" opt; do case $opt in d ) dd="$optarg" ;; t ) td="$optarg" ;; esac done shift $(($optind - 1)) if [ $# -eq 0 ] ; then echo "usage: $(basename $0) [-d c] [-t c] numeric value" echo " -d specifies the decimal point delimiter (default '.')" echo " -t specifies the thousands delimiter (default ',')" exit 0 fi nicenumber $1 1 # second arg forces nicenumber to 'echo' output exit 0
这脚本我们以后分析,现在先mark下。
您可能感兴趣的文章:
如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!
网友评论