RosettaCodeData/Task/Roman-numerals-Decode/UNIX-Shell/roman-numerals-decode.sh

36 lines
449 B
Bash

#!/bin/bash
roman_to_dec() {
local rnum=$1
local n=0
local prev=0
for ((i=${#rnum}-1;i>=0;i--))
do
case "${rnum:$i:1}" in
M) a=1000 ;;
D) a=500 ;;
C) a=100 ;;
L) a=50 ;;
X) a=10 ;;
V) a=5 ;;
I) a=1 ;;
esac
if [[ $a -lt $prev ]]
then
let n-=a
else
let n+=a
fi
prev=$a
done
echo "$rnum = $n"
}
roman_to_dec MCMXC
roman_to_dec MMVIII
roman_to_dec MDCLXVI