首页 > 开发 > Linux Shell > 正文

shell脚本nicenumber实现代码

2020-07-27 19:01:35
字体:
来源:转载
供稿:网友

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下。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表