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