#!/bin/bash
# nicenumber --将给定的数字以逗号分隔的形式显示出来
# 可接受两个选项:DD(decimal point delimiter,小数分隔符)和TD(thousands deliniter,千位分隔符)
# 美化数字单位,如果指定了第二个参数,则将输出回显在stdout
nicenumber(){
#注意我们假设‘.’是脚本输入值的小数分隔符
#除非用户指定选项-d指定了其他分隔符,否则输出值中的小数分隔符也是.
#如果字符中没有对应的字段则所有的列返回对应的原值
integer=$(echo $1 | cut -d. -f1)
decimal=$(echo $1 | cut -d. -f2)
if [ "$integer" != "$1" ]; then
# ${DD:= '.'}如果变量没有定义的话,设置为. 如果有值保持原值
result="${DD:= '.'}$decimal"
fi
thousands=$integer
while [ $thousands -gt 999 ]; do
# $(()) 是shell用于计算的
remainder=$(($thousands % 1000))
while [ ${#remainder} -lt 3 ]; do
remainder="0$remainder"
done
result="${TD:= ','}${remainder}${result}"
thousands=$(($thousands / 1000))
done
nicenum="${thousands}${result}"
echo "第二个参数"$2
if [ ! -z $2 ]; then
echo $nicenum
fi
}
DD="."
TD=","
# getopts 是用于解析参数的,d:t: 就是 -d -t 解析赋予变量opt
while getopts "d:t:" opt; do
case $opt in
d ) DD="$OPTARG" ;;
t ) DD="$OPTARG" ;;
esac
done
# 移除对应的参数的
shift $(($OPTIND - 1))
if [ $# -eq 0 ]; then
echo "Usage: $(basename $0) [ -d c ] [ -t c] number_value"
echo " -d specifies the decimal point delimiter (default '.')"
echo " -t specifies the thousands delimiter (default ',')"
exit 0
fi
# 强制函数回显
nicenumber $1 1
exit 0
07-05
1660
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
11-28
4671
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
02-26
351
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)