Welcome 微信登录

首页 / 操作系统 / Linux / shell脚本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.
废话不多说,首先是
#!/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 ]; doremainder=$(($thousands % 1000))# three least significant digitswhile [ ${#remainder} -lt 3 ] ; do # force leading zeros as needed remainder="0$remainder"donethousands=$(($thousands / 1000))# to left of remainder, if anyresult="${TD:=","}${remainder}${result}"# builds right to left done nicenum="${thousands}${result}" if [ ! -z $2 ] ; thenecho $nicenum fi}DD="." # decimal point delimiter, to separate integer and fractional valuesTD="," # thousands delimiter, to separate every three digitswhile getopts "d:t:" opt; do case $opt ind ) DD="$OPTARG";;t ) TD="$OPTARG";; esacdoneshift $(($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 0finicenumber $1 1 # second arg forces nicenumber to "echo" outputexit 0
这脚本我们以后分析,现在先mark下。