Sed

無法在腳本中執行簡單的乘法

  • June 16, 2015

我在我的腳本中執行簡單的乘法時遇到了麻煩。

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。還有其他方法可以做到這一點嗎?

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

用 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 中對變數執行算術運算

引用自:https://unix.stackexchange.com/questions/210043