Ett i många avseenden poänglöst litet script som beräknar kontrollsiffran i ett personnummer. De nio första siffrorna matas in och den tionde räknas fram och presenteras.
Scriptet kan erbjuda andra värden än rent praktiska då det är ett bra exempel på att iterera över strängar samt hur bash kan användas i matematiska beräkningar. Se särskilt hur modulusoperator (%) används för att multiplicera vartannat tal med 2 och vartannat med 1.
| Code: |
#!/bin/bash
# program: beräkna kontrollsiffra i
# personnummer
# kod: M. Wallin 2007-06-04
echo -n "Personnummer i format yymmddxxx : "
read PNUM;TOTAL=0
for (( D=0;D<${#PNUM};D++ )); do
NUM=${PNUM:D:1}
MULTIPEL=$(( NUM*(2 - D % 2) ))
(( MULTIPEL > 9 )) && (( MULTIPEL -= 9 ))
(( TOTAL += MULTIPEL ))
done
while (( TOTAL > 9 )); do
(( TOTAL -= 10 ))
done
echo $(( 10 - TOTAL ))
|