hex2dec.sh

Napisz w języku powłoki funkcję, która sprawdzi czy pierwszy parametr wywołania jest poprawną liczbą w zapisie szestnastkowym. Funkcja pod swoją nazwą ma zwracać: wartość dziesiętną liczby gdy jest poprawna, -1 w przeciwnym wypadku. © GMB


#! /bin/bash
function hex2dec
{
    count=${#1}
    tablica=$1
    c=$count
    d=1
    dec=0
    while [ $c -gt 0 ];
    do
        test=${tablica:$((count-$d)):1}
        #przekształcanie liter
        touch tmp
        echo $test > tmp
        test2=`grep -cv '[0-9,a-f]' tmp`
        if [ $test2 -gt 0 ] ;
            then echo zle; exit -1
        fi
        #obliczanie
        case $test in
            "a") test=10;;
            "b") test=11;;
            "c") test=12;;
            "d") test=13;;
            "e") test=14;;
            "f") test=15;;
        esac
        wynik=$((wynik+$((test*$((16**$((d-1))))))))
        d=$[d+1]
        c=$[c-1]
    done
    echo $wynik
}
hex2dec $1