Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > 其他编程语言 > 转换金额大写的SHELL程序
【标  题】:转换金额大写的SHELL程序
【关键字】:SHELL
【来  源】:http://blog.chinaunix.net/article.php?articleId=17870&blogId=5444

转换金额大写的SHELL程序

Your Ad Here

#!/bin/ksh
# 首先判断输入的是否为数字
printf "%.2f" >/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 | grep "-"` ] && {
NumStr=`echo | sed 's/^.//'`
RedFlag="(红)"
} || {
NumStr=
RedFlag=""
}
# 初始化输入数字数组
i=1
for TmpC in `printf "%.2f" $NumStr | awk -F "." '{print }' | sed 's/./& /g'`
do
  Nums[$i]=$TmpC
  i=`expr $i + 1`
done
j=$       # 为循环计数变量附初值为输入数字的长度
k=1                 # 为循环定位变量附初值(用于确定金额单位)
ChnNum=""           # 初始化大写金额字符串
while
  [ $j -eq 0 ] && break
  [ $k -gt 11 ] && {
    ChnNum=$]}${Unit[`expr $k - 8 `]}$ChnNum
    j=`expr $j - 1`
    k=`expr $k + 1`
    continue
}
  [ $k -gt 7 -a $k -lt 11 ] && {
    ChnNum=$]}${Unit[`expr $k - 4 `]}$ChnNum
    j=`expr $j - 1`
    k=`expr $k + 1`
    continue
}
  ChnNum=$]}$$ChnNum
do
  j=`expr $j - 1`
  k=`expr $k + 1`
done
ChnNum=`echo $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  $RedFlag$ChnNum

awk实用手册:【上一篇】
dd使用方法[转]:【下一篇】
【相关文章】
  • Shell高级屏幕输出
  • shell版俄罗斯方块
  • SHELL起步
  • 自动输入用户名和密码用于telnet的shell
  • shell command line 执行顺序
  • shell中字符串的处理
  • 一个添加用户的shell程序
  • 编写shell函数的几个方法
  • Linux shell I/O重定向详解
  • sco 5.05中用shell实现的密码输入脚本,可将输入字符转换为*
  • 【随机文章】
  • 猜想:Web Server 是否是个鸡肋?
  • vi-vim 命令操作完全图表指南
  • 关于Hibernate3的escape解决方法
  • NO Stop的GUI
  • NDoc 1.3.1 中文版发布
  • 试用CppUnit--一个简单的例子
  • Struts 框架-----使用 Tiles
  • 第一步:学习
  • VDSL——具有强大生命力的xDSL技术
  • TECHNET2月光盘部分资料在线下载!
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.