Bash:检查一个十进制数是否大于另一个十进制数

时间:2017-11-16 14:39:51

标签: bash

我有这样的案例:

--- FAIL: TestEncryptPrice (0.00s)
        Error Trace:    price_test.go:19
    Error:          Not equal:
                    expected: "WEp8wQAAAABnFd5EkB2k1wJeFcAj-Z_JVOeGzA"
                    actual: "WEp8wQAAAABnFd5EkB2k1wf7jAcG7gZ9tPUnAA"
--- FAIL: TestDecryptPrice (0.00s)
        Error Trace:    price_test.go:32
    Error:          Expected nil, but got: &errors.errorString{s:"sinature mismatch: confSignature = \xbe\xaa\xf6h, sinature = T\xe7\x86\xcc"}
        Error Trace:    price_test.go:33
    Error:          Not equal:
                    expected: 0x64
                    actual: 0x0
FAIL

string1="some_string" string2="some_string" int1="0.87" int2="${var}" 是其他一些脚本的输出,其格式为$var0.994343123或其他形式(以0开头,最大值为0.3454657左右)

现在,我不知道bash是如何工作的,但通常字符串0.9972343永远不会小于或等于0.87,它们只是不同。

我需要这样的东西(伪代码):

0.9999999

我期望的是if (string1 equals string2 and int1 is less than int2): do something; else do something else. 大于0.87687(正确吗?我从未擅长数学......)

任何人都可以帮我解决这个问题吗?

提前致谢!

3 个答案:

答案 0 :(得分:2)

由于public function get_taxonomy_hierarchy( $taxonomy, $parent = 0 ) { $taxonomy = is_array( $taxonomy ) ? array_shift( $taxonomy ) : $taxonomy; $terms = get_terms( $taxonomy, [ 'parent' => $parent ] ); $children = []; foreach ( $terms as $term ) { $term->url = get_term_link( $term->term_id); $term->children = $this->get_taxonomy_hierarchy( $taxonomy, $term->term_id ); array_push($children, $term->term_id); } return $children; } 不处理浮点运算,您可以使用$term->term_id;比较2个浮点数,并将条件与bash结合为:

bc -l

答案 1 :(得分:2)

如果值介于0和1之间,则字符串比较将起作用

s1=..; s2=..
v1="0.876"; v2="0.87"
[[ $s1 = $s2 && $v1 > $v2 ]] && echo yes || echo no 

答案 2 :(得分:0)

a=0.86
b=0.865
if ((`echo $a '<' $b|bc`)); then echo 'a<b'; fi

(您可以用

替换最后一行
if (($(echo $a '<' $b|bc))); then echo 'a<b'; fi

但imho它的可读性较差)