関数でやりたいことができません。関数get_from_A_to_Fを呼び出すときは、引数$remainderを指定します。関数で9より大きい数値を特定の文字に置き換えたい。引数が10に等しい場合は、「A」に変更する必要があります。ただし、それでも10のままです。ここで何が間違っているのでしょうか。
#!/bin/sh
get_from_A_to_F()
{
case $1 in
10) $1="A"
;;
11) $1="B"
;;
12) $1="C"
;;
13) $1="D"
;;
14) $1="E"
;;
15) $1="F"
;;
[0-9]) $1=$1
;;
esac
echo $1
}
read number
string=""
index=`expr index $number "."`
if [ $index -eq 0 ]
then
integer=$number
fraction=0
else
integer=`expr substr $number 1 $(expr $index - 1)`
fraction=`expr "$number - $integer" | bc`
fi
result=$integer
while [ $result -ne 0 ]
do
remainder=`expr $result % 16`
get_from_A_to_F $remainder
result=`expr $result / 16`
string=$remainder$string
done
現在の出力(読み取られた数値が634の場合):
634
test: 43: 10=A: not found
10
test: 43: 7=7: not found
7
test: 43: 2=2: not found
2