无法在脚本中执行简单的乘法

无法在脚本中执行简单的乘法

我在脚本中执行简单的乘法时遇到问题。

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

foo.txt:

13721725 99 100
400198848 170 180
217845440 113 120`

所需的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 shell 中对变量执行算术运算

答案2

awk

$ 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

相关内容