shell脚本nicenumber实现代码

时间:2021-05-22

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 valuesTD="," # thousands delimiter, to separate every three digitswhile getopts "d:t:" opt; do case $opt in d ) 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下。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章