ChinaUnix.net
 >> ChinaUnix.net > SCO

[原创]SCO下转换大写金额的SHELL脚本,已调试通过!!

作者:lvgq2001     发表时间:2002/10/24 03:06pm

[这个贴子最后由lvgq2001在 2002/10/24 04:13pm 编辑]

#!/bin/ksh
# Program Name : Num2Chn.sh
# Programmer   : 吕永辉(仙桃市信用联社)
# 首先判断输入的是否为数字
printf "%.2f" $1 >/dev/null 2>&1 3>&1 || {
   echo "输入非法!!!";exit
}
# 定义数字数组
Num[0]="零" Num[1]="壹" Num[2]="贰" Num[3]="叁" Num[4]="肆" Num[5]="伍"
Num[6]="陆" Num[7]="柒" Num[8]="捌" Num[9]="玖"
# 定义金额单位数组
Unit[1]="分" Unit[2]="角" Unit[3]="元" Unit[4]="拾" Unit[5]="佰" Unit[6]="仟"
Unit[7]="万" Unit[11]="亿"
# 处理负数的情况(红字)
[ `echo $1 | grep "-"` ] && {
 NumStr=`echo $1 | sed 's/^.//'`
 RedFlag="(红)"
} || {
 NumStr=$1
 RedFlag=""
}
# 初始化输入数字数组
i=1
for TmpC in `printf "%.2f" $NumStr | awk -F "." '{print $1$2}' | sed 's/./& /g'`
do
  Nums[$i]=$TmpC
  i=`expr $i + 1`
done
j=${#Nums[@]}       # 为循环计数变量附初值为输入数字的长度
k=1                 # 为循环定位变量附初值(用于确定金额单位)
ChnNum=""           # 初始化大写金额字符串
while
  [ $j -eq 0 ] && break
  [ $k -gt 11 ] && {
    ChnNum=${Num[${Nums[$j]}]}${Unit[`expr $k - 8 `]}$ChnNum
    j=`expr $j - 1`
    k=`expr $k + 1`
    continue
}
  [ $k -gt 7 -a $k -lt 11 ] && {
    ChnNum=${Num[${Nums[$j]}]}${Unit[`expr $k - 4 `]}$ChnNum
    j=`expr $j - 1`
    k=`expr $k + 1`
    continue
}
  ChnNum=${Num[${Nums[$j]}]}${Unit[$k]}$ChnNum
do
  j=`expr $j - 1`
  k=`expr $k + 1`
done
ChnNum=`echo $RedFlag$ChnNum | sed 's/零分/整/' | sed 's/零角/零/g' \
            | sed 's/零拾/零/g' | sed 's/零佰/零/g' | sed 's/零仟/零/g'\
            | sed 's/零整/整/' | sed 's/零零零零万/零/'`
# 下面的循环用于去掉字符串中连续的零
while
  [ `echo $ChnNum | grep "零零"` ] || {
     ChnNum=`echo $ChnNum  | sed 's/零元/元/'| sed 's/零万/万/' \
       | sed 's/零亿/亿/' | sed 's/^元//' | sed 's/^零//' | sed 's/^整$/零元&/`
     break
}
do
  ChnNum=`echo $ChnNum | sed 's/零零/零/g'`
done
echo $ChnNum
(调试环境:SCO OpenServer 5.0.5 、ksh )

此文章相关评论:
该文章有14个相关评论如下:(点这儿可以发表评论)
洪哥 发表于: 2002/10/24 03:29pm
num2chn.sh[29]: 为循环计数变量附初值为输入数字的长度:  not found
num2chn.sh[30]: syntax error at line 30 : `(' unexpected

报错!

 
lvgq2001 发表于: 2002/10/24 04:15pm
论坛的问题,那是注释信息,必须与程序语句间有空格!
 
lvgq2001 发表于: 2002/10/24 08:46pm
关注ing...
 
wkl 发表于: 2002/10/24 08:54pm
不错 但最好将正确的传到FTP中,大家下载不就行了吗!
 
lvgq2001 发表于: 2002/10/24 09:44pm
已经更正了。
 
lvgq2001 发表于: 2002/10/27 11:05am
怎么没人感兴趣吗?
 
sdccf 发表于: 2002/10/27 11:06am
我试了一下,很不错啊。
 
bloodbody 发表于: 2002/10/27 11:11am
我也是信合的,对我很有用,谢谢.
 
123456 发表于: 2002/10/27 11:29am
好啊。
 
yetiwolf 发表于: 2002/10/27 01:37pm
   我也试了一下, 很好用,好
 
geekchi 发表于: 2002/10/30 01:31pm
精华!
 
笑嘻嘻 发表于: 2002/10/30 01:34pm
不错
 
sd-feng 发表于: 2002/10/30 07:15pm
ok
 
xm111 发表于: 2002/10/31 04:43am
我正要用,多谢了
 
 

Copyright © ChinaUnix.net  *  转载请注明出处及作者