我正在尝试使用以下命令作为示例来评估数组中的元素:
sorted=(0 0.0223611 0.977639)
if [[ $(echo "${sorted[-2]} > 0" | bc) ]];then echo 'yes';else echo 'no';fi
这将给出正确答案'是';但是,当我将'0'改为'0.8'时,
if [[ $(echo "${sorted[-2]} > 0.8" | bc) ]];then echo 'yes';else echo 'no';fi
它仍然给出相同的答案'是',这是不正确的。
在此之后,如果我将命令行更改为:
if [[ $(echo ${sorted[-2]} > 0.8 | bc) ]];then echo 'yes';else echo 'no';fi
答案是'不',这是正确的。但如果我改回0,答案仍然是'不'。
所以每次添加或删除双引号时,第一个答案都是正确的。但无论之后的浮动如何变化,它都不会改变。我完全迷失了这里发生的事情。请帮帮我。谢谢!
答案 0 :(得分:0)
bc
将0
打印为false,将1
打印为true。 [[ 0 ]]
和[[ 1 ]]
都是正确的,但您可以将它们与1进行比较:
if [[ $( bc -l <<< "${sorted[-2]} > 0.8" ) = 1 ]]
或使用其中0为假且1(或任何其他数字)为真的算术表达式:
if (( $( bc -l <<< "${sorted[-2]} > 0.8" ) ))