2016-04-06 7 views
0

変数の平均が95%より低い場合は、以下のコードを使用しています。私の問題は、例えば$ 200.5ではない値を持つ$ avgが戻ってきて、bashがそれを好きではないということです。私は私の場合は、より低いよりも、フォーマットする方法はわかりません。bashのif文で小数点を扱う

servers=4 
percentage=0.95 
formula=$(($totalspace/$servers)) 
avg=$(echo $formula*$percentage | bc) 

if [ $server1 -lt $avg ] 
then 

おかげ

答えて

3

あなたは(1)紀元前に離れてあなたの計算を出荷正しい考えを持っていました。そのアイデアをもう少し持ち歩いて、そこでの計算全体をしてください。

心に留めておくべき事...

  1. BC意志リターン整数結果、デフォルトでは、scale = 4か何か
  2. BCがあまりに浮い比較を行うことができ、関係演算子は、0または1を返す使用
  3. 数字で囲まれた*が展開される可能性は低いにもかかわらず、シェルが試みるため、計算を引用することができます。
+0

avg = $(echo "scale = 4; $ average * $ percentage" | bc)は役に立ちません – jaseUK

+0

bashは浮動小数点を比較できないので、結果。私が言ったように、あなたは比較(そして以前の計算)をBCでもやる必要があります。 – DigitalRoss

関連する問題