#!/bin/bash
mv()
{
# 发票名字乱码,批量改名字
dir="/datadisk/eisc/ftp/eisc/报销/20230529/高德打车电子发票"
filelist=(`ls $dir | grep -v mv.sh`)
for((i=0;i<${
#filelist[*]};i++))
do
echo "文件: {
mathJaxContainer[0]}{
filelist[$i]}
正在重新命名为: {
mathJaxContainer[1]}i.pdf
"
sudo mv {
mathJaxContainer[2]}{
filelist[{
mathJaxContainer[3]}dir/$i.pdf
done
echo "列出所有文件: "; ls -alh $dir/
}
feiyong()
{
quwei=2;
datasum=( # 车船费记录
93.51
26.6
24.54
29.89
70.16
10.49
33.88
8.7
51.44
207.2
50.94
15.5
42.0
90.5
35
17.00
)
cblist=( # 餐补标准
60 # 60元/天
20 # 20 天
)
zslist=( # 住宿费标准
170 # 住宿 170元/天
19 # 19 天
)
}
chechaun()
{
feiyong
ccsum=0 # sum 初始数值为 数组第一个元素
echo "default sum is : $ccsum"
for((i=0;i<${
#datasum[*]};i++))
do
x="${datasum[$i]}"
p=$ccsum # sum 会自动增加,在增加之前将数值存入变量,得到 sum 增加之前的数值
ccsum=`echo " " | awk -v x="$x" -v sum="$ccsum" -v quwei=$quwei '{printf "%.2f", sum+x }'`
echo "车船报销费: sum = sum + x = $p + $x = $ccsum "
done
echo "" ; echo ""; echo "" ;
}
canbu()
{
feiyong
x=${
cblist[0]};
y=${
cblist[1]};
cbsum=`echo " " | awk -v x="$x" -v y="$y" '{printf "%.2f", x*y}'`
cbsumstr=`echo "餐补为: cbsum = $x x $y = $cbsum"`
}
zhusu()
{
feiyong
x=${
zslist[0]} ;
y=${
zslist[1]} ;
zssum=`echo "" | awk -v x="$x" -v y="$y" '{printf "%.2f", x*y}' `
zssumstr=`echo "住宿补为: zssum = $x x $y = $zssum"`
}
fcdanwei()
{
daxielist=(
零 壹 贰 叁 肆 伍 陆 柒 捌 玖 拾 佰 仟 万 亿 元 角 分 整
# 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
)
case "$psumzhengLenght" in
1) echo "当前长度为 1 为 元 单位" ; danwei=${
daxielist[15]} ;;
2) echo "当前长度为 2 为 拾 单位" ; danwei=${
daxielist[10]} ;;
3) echo "当前长度为 3 为 佰 单位" ; danwei=${
daxielist[11]} ;;
4) echo "当前长度为 4 为 仟 单位" ; danwei=${
daxielist[12]} ;;
5) echo "当前长度为 5 为 万 单位" ; danwei=${
daxielist[13]} ;;
9) echo "当前长度为 6 为 亿 单位" ; danwei=${
daxielist[14]} ;;
*) echo "未定义长度单位" ;;
esac
case "$psumxiaoLenght" in
1) echo "当前长度为 1 为 分 单位" ; danwei=${
daxielist[17]} ;;
2) echo "当前长度为 2 为 角 单位" ; danwei=${
daxielist[16]} ;;
*) echo "未定义长度单位" ;;
esac
case "$shuzi" in
0) hanzi={
mathJaxContainer[11]}hanzi " ;echo "" ;;
1) hanzi={
mathJaxContainer[12]}hanzi " ;echo "" ;;
2) hanzi={
mathJaxContainer[13]}hanzi " ;echo "" ;;
3) hanzi={
mathJaxContainer[14]}hanzi " ;echo "" ;;
4) hanzi={
mathJaxContainer[15]}hanzi " ;echo "" ;;
5) hanzi={
mathJaxContainer[16]}hanzi " ;echo "" ;;
6) hanzi={
mathJaxContainer[17]}hanzi " ;echo "" ;;
7) hanzi={
mathJaxContainer[18]}hanzi " ;echo "" ;;
8) hanzi={
mathJaxContainer[19]}hanzi " ;echo "" ;;
9) hanzi={
mathJaxContainer[20]}hanzi " ;echo "" ;;
*) echo "未定义数字大写" ;;
esac
}
shengcheng()
{
for((i=0;i<=9;i++)) # 我是 case 代码生成工具
do
echo " $i) hanzi=\${daxielist[$i]} ; echo \"当前数字为 $i 为 对应大写汉字:\$hanzi \" ;echo \"\" ;; ";
done
}
capitalize()
{
sumzheng=`echo $zongsum | awk -F"." '{print $1}'`
sumxiao=`echo $zongsum | awk -F"." '{print $2}'`
sumzhengLenght=${
#sumzheng}
sumxiaoLenght=${
#sumxiao}
echo "整数部分: $sumzheng 长度 $sumzhengLenght 小数部分 : $sumxiao 长度:$sumxiaoLenght " ; echo ""
for((i=0;i<$sumzhengLenght;i++))
do
shuzi={
mathJaxContainer[27]}i:1}
psumzhengLenght=$[sumzhengLenght-i]
echo "截取数字,第 $i 个位置 截取 一个数字为: $shuzi 当前剩余长度为: $psumzhengLenght = $sumzhengLenght - $i "
fcdanwei
daxiezhi[{
mathJaxContainer[30]}hanzi $danwei `
done
psumzhengLenght="null";
echo "#------- 大写结束 重置 大写匹配参数,不再匹配大写环境 ---------#" ; echo "";
for((i=0;i<$sumxiaoLenght;i++))
do
shuzi=${sumxiao:$i:1}
psumxiaoLenght=$[sumxiaoLenght-i]
echo "截取数字,第 $i 个位置 截取 一个数字为: $shuzi 当前剩余长度为: $psumxiaoLenght = $sumxiaoLenght - $i "
fcdanwei
Xdaxiezhi[$i]=`echo $hanzi $danwei `
done
}
main()
{
chechaun
canbu
zhusu
a="$ccsum";
b="$cbsum";
c="$zssum";
echo "";
canzhusum=`echo "" | awk -v b="$b" -v c="$c" '{printf "%.2f", b+c}' `
zongsum=`echo "" | awk -v a="$a" -v b="$b" -v c="$c" '{printf "%.2f", a+b+c}'`
capitalize
#shengcheng
echo "车船费: $ccsum $cbsumstr $zssumstr " ; echo ""
echo "餐住总和: $canzhusum " ; echo "" ; echo "所有费用: $zongsum" ; echo ""
echo "#----------------------#"
echo "大写: ${daxiezhi[*]} ${Xdaxiezhi[*]}"
echo "#----------------------#"
}
main
# 一键使用: wget eisc.cn/file/ubuntu/shell/tools/file/chuchai-sum.sh; sudo chmod +x chuchai-sum.sh ; ./chuchai-sum.sh