shell脚本nicenumber实现代码
程序员文章站
2022-08-26 16:13:52
given a number, shows it in comma-separated form.expects dd and td to be instantiated....
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下。
上一篇: Linux启动过程详细介绍
下一篇: 一个监控网卡流量的shell脚本