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]"