shell属羊代码linux,shell脚本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.

废话不多说,首先是

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值