我写了这个,如果那显然行不通,但我仍然无法克服它:
#LASTEFFECTIVEHASH
if (( $(echo "$LASTEFFECTIVEHASHMINVAL < $LASTEFFECTIVEHASH < $LASTEFFECTIVEHASHMAXVAL" | $BC -l) )); then
echo "$DATESTAMP - LASTEFFECTIVEHASH=$LASTEFFECTIVEHASH is between $LASTEFFECTIVEHASHMINVAL and $LASTEFFECTIVEHASHMAXVAL"|tee -a $LOGFILE
else
echo "$DATESTAMP - LASTEFFECTIVEHASH=$LASTEFFECTIVEHASH is not between $LASTEFFECTIVEHASHMINVAL and $LASTEFFECTIVEHASHMAXVAL"|tee -a $MSGFILE $LOGFILE
fi
但是,当值超出范围时,将导致以下结果:
20170810003646 - LASTEFFECTIVEHASH=139.2 is between 104.9 and 136.9
我遵循数学语法:如果x> 104.9和<136.9,则在数学中编写它104.9 < x < 136.9
。但是我怀疑bash / bc与我的数学老师的表现有所不同。
如果公元前不超过137个,那将是很好;)
与例如python不同,bc
它不支持链式比较:
a < b < c
要执行两个比较并要求两个都为真,请使用逻辑与(需要GNU bc):
(a < b) && (b < c)
例如:
$ a=104.9; b=136; c=136.9; if echo "($a < $b) && ($b < $c)" | bc -l | grep -q 1; then echo True; else echo False; fi
True
$ a=104.9; b=137; c=136.9; if echo "($a < $b) && ($b < $c)" | bc -l | grep -q 1; then echo True; else echo False; fi
False
如果您没有GNU bc,则可以用乘法替换逻辑和。
$ a=104.9; b=136; c=136.9; if echo "($a < $b)*($b < $c)" | bc -l | grep -q 1; then echo True; else echo False; fi
True
$ a=104.9; b=137; c=136.9; if echo "($a < $b)*($b < $c)" | bc -l | grep -q 1; then echo True; else echo False; fi
False
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句