比较 bash 中的浮点值

Comparing float values in bash

您好,我想比较 bash 中的 2 个浮点数,但我没有找到任何可以正常工作的东西。 我的实际代码如下:

  if [ $(echo " 0.5 > $X " | bc -l )==1 ]
  echo grande
  fi
  if [ "$(bc <<< "$X - 0.5")" > 0 ] ; then
  echo 'Yeah!'
  fi

出现的情况是无论X大于0.5还是小于0.5,它总是重复这两个句子,我不知道为什么。 我知道 X 大于或小于 0.5 因为我也回显它并且我可以看到它。

在bash中,您需要非常注意间距。例如:

if [ $(echo " 0.5 > $X " | bc -l )==1 ]; then
  echo grande
fi

这里,==两边没有空格,所以会被解释为:

if [ 0==1 ]; then
fi

信不信由你,这个条件总是成立的。

考虑:

if [ "$(echo " 0.5 > $X " | bc -l )" == 1 ]; then
  echo grande
fi

.