2014-04-28 22 views
0

我在嘗試一些非常簡單的操作,但是我嘗試的所有代碼都不起作用。 我需要在bash中添加兩個浮點數。我這樣做:在bash中添加浮動數字

result1=`$CURL -o /dev/null -s -w %{time_total} $url1` 
result2=`$CURL -o /dev/null -s -w %{time_total} $url2` 
result3=`$CURL -o /dev/null -s -w %{time_total} $url3` 
total= `expr $result2 + $result3` 

echo $total | $GAWK -F: '{ print "connection_1.value " $1 }' 

但在提示我得到這樣的輸出:

./http_response_2: line 12: 0,018+0,255: command not found 
connection_1.value 

我想也這樣做:

result1=`$CURL -o /dev/null -s -w %{time_total} $url1` 
result2=`$CURL -o /dev/null -s -w %{time_total} $url2` 
result3=`$CURL -o /dev/null -s -w %{time_total} $url3` 
total= `$result2 + $result3 | bc` 

得到同樣的結果。 在此先感謝!

+1

刪除空間在'total ='和''expr ...'之間# – fedorqui

+1

用最後一段代碼替換最後一行:'total = $(bc <<<「$ result2 + $ result3」)' –

+0

@fedorqui謝謝, m得到這個:expr:沒有整數參數 – HCarrasko

回答

3

有3個問題:

  1. 不應該有空間total=之間&`
  2. $result2 + $result3
  3. 有逗號在輸入中回聲缺失,而不是小數點。

修復所有這些問題:

total=$(tr ',' '.' <<< "$result2 + $result3" | bc -l) 

如果您擔心小數點前的0領先,嘗試:

total=$(tr ',' '.' <<< "$result2 + $result3" | bc -l | xargs printf "%g") 
+0

非常感謝您:)'total = $ (tr',''。<<<「$ result2 + $ result3」| bc -l | xargs printf「%g」)'解決了我的問題 – HCarrasko

0

而是用點代替逗號,不產生逗號首先。

他們從本地化的出現,所以用LC_ALL = C作爲前綴,如:

LC_ALL=C curl -o /dev/null -s -w %{time_total} www.google.com 

,拋棄過時的反引號,使用$(...),而不是:

result1=$(LC_ALL=C $CURL -o /dev/null -s -w %{time_total} $url1)