15位身份证号码转18位

1903人阅读 评论(2) 收藏 举报

15位身份证号码转18位:

clear;echo "/n请输入15位证件号码:/c"
read zj0
if [ ! "$zj0" ]; then exit; fi
ws=`expr length $zj0`
if [ $ws != 15 ];  then echo "/n身份证位数错误!!/c";read jkl;exit;fi
zj1=`echo $zj0|cut -c1-6`
zj2=`echo $zj0|cut -c7-`
sfz=$zj1"19"$zj2"0"
i=1; rm -f sfz.txt
while [ $i -lt 19 ]
 do
ai=`echo $sfz|cut -c$i-$i`
wi=`echo "7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1"|awk -v I=$i '{print $I}'`
awi=`echo $ai*$wi|bc`
echo "$awi">>sfz.txt
i=`expr $i + 1`
done
sbh=`awk '{s=s+$1}END{print s%11}' sfz.txt`
case $sbh in
 0) mw=1;;
 1) mw=0;;
 2) mw=X;;
 3) mw=9;;
 4) mw=8;;
 5) mw=7;;
 6) mw=6;;
 7) mw=5;;
 8) mw=4;;
 9) mw=3;;
10) mw=2;;
esac
echo "15位证件号::[$zj0]
18位证件号:[$zj1"19"$zj2$mw]"

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:879097次
    • 积分:7850
    • 等级:
    • 排名:第2640名
    • 原创:187篇
    • 转载:30篇
    • 译文:0篇
    • 评论:121条
    文章分类
    最新评论