remainder=$((thousand00)) while [ ${#remainder} –lt 3 ];do
#${#remainder} # 避免remainder
为remainder串的长度
remainder=0$remainder 为00x时的丢0情况。
done
thousand=$(($thousand/1000))
#以下四句可用一句表示:result=‖${TD:=”,”}$remainder$result‖ # 上面蓝色部分表:若TD非空则返回TD,否则将”,”赋给TD.
if [ –z $TD ] ; then # 判断用户是否自定义整数分隔符, 若 空
TD=, fi result=‖$TD$remainder$result‖ 顺序
done
# 与分隔符合成串。 注意
}
if [ –n $thousand ]; then # 若 非空
result=‖$thousand$result‖
elif [ ${result%${result#?}} = ―$TD‖ ]; then result=‖${result#?}‖ fi
echo $result
脚本标志参数处理命令: getopts ―‖ var 带两个参数,第一个参数为带解析的 参数标志序列串(如-f,-c等), 以冒号(:)分隔各标志,且以冒号:结束
第二个参数为:变量,每执行一次存放 参数标志序列串中的一个标志字符 返回值:未解析结束返回0,解析结束返回1
涉及的内定变量:$OPTARG 每次解析标志对应的参数值 便默认存放在此变量内。
$OPTIND 当各标志处理无误情况下,该数值指示当前用到的最大位置参数($#)。
此值使用容易出错(若参数的判断不完善时), 还不如用 $#
另外 $1, $2, $3, $4, ===> 此时 $# 等于 4, 当执行shift 1 时, 各个位置参数的值向一次向左右1次,此时 $1的值 为原$2的值
当执行shift 2 时, 各个位置参数的值向一次向左右2次,此时 $1的值 为原$3的值。
完整代码 ------- nicenumber.sh --------------------------- nicenumber()
..... # 函数实现部分
#处理脚本标志参数
while getopts ―d:t:‖ opt do
case $opt in # $opt 为 具体的标志字符 d ) DD=‖$OPTARG‖ ;; # $OPTARG 为标志指定的参数值 t ) TD=‖$OPTARG‖ ;; * ) echo ―no arg-flag: $opt‖ >&2 ; exit 1 esac done
# 当脚本接收如此多的参数时,$1将不代表脚本最终要处理的大数字,所以做如下操作。
shift $(($OPTIND - 1))
nicenumber $1 exit 0
----------------------------------------------------------------
扩展:
1.不同国家整数与小数的分隔符不同,使脚本能够处理各种整数与小数各种分隔符情况。在传给脚本参数时需指定标志-d
程序中仅需在 分隔 整数与小数部分略修改为
integer=$