美化多位数字

#!/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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我的天才女友

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值