スクリプトで単純な乗算を実行できません。

スクリプトで単純な乗算を実行できません。

スクリプトで単純な乗算を実行する際に問題があります。

while read A B C
do
  tmp=$A\*$C/100 
  echo $tmp >> out1.txt
done < foo.txt

foo.txt:

13721725 99100
400198848170180
217845440 113120 `

必須 out1.txt:

値1
値2
値3

これは私の現在の出力です。

13721725*100/100
400198848*180/100
217845440*120/100

さまざまな組み合わせを試しました。

tmp=$({A} \* {C/100})
tmp=$($A\*($C/100))
tmp=`$A\*$C/100` (tried to store it using back ticks)
tmp=expr $A\*$C/100

何も動作しないようです。私はKSHとSolaris 5.10を使用しています。別の方法がありますか?

答え1

kshでこれを試してください:

while read A B C; do
  tmp=$(($A*$C/100))
  echo $tmp
done < foo.txt > out1.txt

out1.txtに出力:

13721725
720357926
261414528

望むより:Korn シェルの変数に対する算術演算の実行

答え2

アッ

$ awk '{print $1*$3/100}' file
13721725
7.20358e+08
261414528

「科学的」表記法を望まないと仮定すると、次のようになります。

$ awk '{printf "%.1f\n", $1*$3/100}' file
13721725.0
720357926.4
261414528.0

関連情報