2011-09-17 45 views
3

我想從bash中使用bc的文件中找到一堆浮點數的平均值。浮點數列表的平均數Bash

現在,當我添加使用:

let "sum=sum+${NUMBERS[$i]} | bc" 

` 我得到的語法錯誤,當我這樣做不過。在語法上,這有什麼問題?

回答

3

bc期待標準輸入。由於第一個命令沒有標準輸出,在這種情況下,bc沒有輸入。試試這個:

sum=`echo $sum+${NUMBERS[$i]} | bc -l` 
+0

這有很多幫助,因爲我不清楚爲什麼這不起作用。 bc需要標準命令的輸出,比如echo,是否正確?現在我有另一個問題。爲了獲得平均值,我試着做average ='echo $ sum/$ NUMLEN | bc'就像你之前給我看過的那樣,但是當我回顯它(echo $ average | bc)時,它將小數點去掉並顯示爲只是一個int – gibsonfirebird12

+0

我應該早些提到它,但是在調用bc時使用-l標誌啓用它的數學庫。所以average = $(echo $ sum/$ NUMLEN | bc -l)會做你想做的。 「|」 bash中的運算符從其左側的命令獲取輸出,並將其作爲輸入提供給其右側的命令。所以使用echo會將表達式輸出到標準輸出,然後「|」將它作爲輸入輸入到bc中。 – entitledX

+0

非常感謝! – gibsonfirebird12