在bash中添加浮点数

问题描述 投票:0回答:2

我正在尝试一些非常简单的东西,但我正在尝试的所有代码都不起作用。我需要在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`

获得相同的结果。提前致谢!

bash unix
2个回答
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
投票

而不是用点替换逗号,不要首先产生逗号。

它们来自本地化,因此使用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)
© www.soinside.com 2019 - 2024. All rights reserved.