read -p "NUMERO DNI(8 DIGITOS): " DNI
NIF='TRWAGMYFPDXBNJZSQVHLCKE'
MODULO23=`expr $DNI \% 23`
SUMANDO=`expr $MODULO23 \+ 1`
echo $NIF | cut -c $SUMANDO
El número de identificación fiscal NIF español es
un código único que identifica a todos los ciudadanos
españoles a efectos fiscales.
Se calcula mediante el algoritmo denominado modulo23
nada que ver con jim carrey).
Calculamos el resto de dividir el numero del DNI
por 23 y nos da un numero comprendido entre 0 y 22.
Ese numero ha de compararse con la siguiente tabla.
* 0 - T
* 1 - R
* 2 - W
* 3 - A
* 4 - G
* 5 - M
* 6 - Y
* 7 - F
* 8 - P
* 9 - D
* 10 - X
* 11 - B
* 12 - N
* 13 - J
* 14 - Z
* 15 - S
* 16 - Q
* 17 - V
* 18 - H
* 19 - L
* 20 - C
* 21 - K
* 22 - E
El script es demasiado grande.
Una linea nos la quitamos pasando como parametro el DNI, asi que nos quedan 4.
NIF='TRWAGMYFPDXBNJZSQVHLCKE'
MODULO23=`expr $1 \% 23`
SUMANDO=`expr $MODULO23 \+ 1`
echo $NIF | cut -c $SUMANDO
Para quitarnos otra linea más lo hacemos asi:
NIF='TRWAGMYFPDXBNJZSQVHLCKE'
MODULO23=`expr $1 \% 23`
echo $NIF | cut -c $(( $MODULO23 + 1 ))>
Para dejarlo tan solo en 2 lineas nos quitamos la variable modulo23 asi:
NIF='TRWAGMYFPDXBNJZSQVHLCKE'
echo $NIF | cut -c $(( $(( $1 % 23 )) + 1 ))
Para dejarlo en una linea:
echo TRWAGMYFPDXBNJZCKE | cut -c $(( $(( $1 % 23 )) + 1 ))