스크립트에서 단순 곱셈을 수행할 수 없습니다.

스크립트에서 단순 곱셈을 수행할 수 없습니다.

스크립트에서 간단한 곱셈을 수행하는 데 문제가 있습니다.

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 쉘의 변수에 대한 산술 연산 수행

답변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

관련 정보