2017-06-12 39 views
0

我是shell腳本編程新手。我的輸入文件如下所示:將字符串轉換爲十進制並在shell腳本中計算

1.54 
3.235 
.7 

我讀這個文件,把每行都寫入一個變量。

ONE=`sed -n '1p' file`; 
TWO=`sed -n '2p' file`; 
THREE=`sed -n '3p' file`; 

現在,我需要做一些計算(如乘法,除法..)這些變量。 任何人都請指教。

+0

您是否嘗試過輸出變量?當您使用相同的命令來填充它們時,它們應該都包含相同的值。 – choroba

+0

你用什麼外殼?一些shell不支持浮點運算。 – choroba

+0

@choroba,這是一個錯字,我現在糾正它。 – Srikanth

回答

1

bash不支持浮點運算(僅整數運算)。您需要將操作傳遞給像bc這樣的工具。

例如:

DIV=$(echo "scale=3; $ONE/$TWO" | bc) 
echo $DIV 

MUL=$(echo "scale=3; $ONE/$DIV" | bc) 
echo $MUL 
+0

這就是我正在尋找的東西。謝謝 ! – Srikanth

0

您可以使用bc來做到這一點。例如echo "$ONE + $TWO + $THREE" | bc給出這些數字的總和。

+0

我試過了,它只能用於回顯。爲什麼我不能將結果轉化爲另一個變量並進行更多計算? – Srikanth

+0

'someOtheRVariable = $(echo「$ ONE + $ TWO + $ THREE」| bc)'then'echo「$ someOtheRVariable」' –

0

你可以這樣做:

#!/bin/bash 

# read complete file in an array 
mapfile -t arr < file 

# do some calculations 
n=$(echo "${arr[0]} + ${arr[1]} - ${arr[2]}" | bc -l) 

# display resul 
echo "$n" 

# output 
# 4.075 
相關問題