我是shell腳本編程新手。我的輸入文件如下所示:將字符串轉換爲十進制並在shell腳本中計算
1.54
3.235
.7
我讀這個文件,把每行都寫入一個變量。
ONE=`sed -n '1p' file`;
TWO=`sed -n '2p' file`;
THREE=`sed -n '3p' file`;
現在,我需要做一些計算(如乘法,除法..)這些變量。 任何人都請指教。
我是shell腳本編程新手。我的輸入文件如下所示:將字符串轉換爲十進制並在shell腳本中計算
1.54
3.235
.7
我讀這個文件,把每行都寫入一個變量。
ONE=`sed -n '1p' file`;
TWO=`sed -n '2p' file`;
THREE=`sed -n '3p' file`;
現在,我需要做一些計算(如乘法,除法..)這些變量。 任何人都請指教。
bash
不支持浮點運算(僅整數運算)。您需要將操作傳遞給像bc
這樣的工具。
例如:
DIV=$(echo "scale=3; $ONE/$TWO" | bc)
echo $DIV
MUL=$(echo "scale=3; $ONE/$DIV" | bc)
echo $MUL
這就是我正在尋找的東西。謝謝 ! – Srikanth
您可以使用bc
來做到這一點。例如echo "$ONE + $TWO + $THREE" | bc
給出這些數字的總和。
我試過了,它只能用於回顯。爲什麼我不能將結果轉化爲另一個變量並進行更多計算? – Srikanth
'someOtheRVariable = $(echo「$ ONE + $ TWO + $ THREE」| bc)'then'echo「$ someOtheRVariable」' –
你可以這樣做:
#!/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
您是否嘗試過輸出變量?當您使用相同的命令來填充它們時,它們應該都包含相同的值。 – choroba
你用什麼外殼?一些shell不支持浮點運算。 – choroba
@choroba,這是一個錯字,我現在糾正它。 – Srikanth