Bash can't handle floats. Pipe to bc
instead:
if [ $(echo " $test > $k" | bc) -eq 1 ]
The error you see though is because the test
command (i.e. the [
) needs spaces before and after
It is even better to use (( ... ))
since you compare numbers like this:
if (( $(bc <<< "$test > $k") ))
The part in the loop should look like this:
if (( $(bc <<< "$test <= 1") ))
then
echo "output"
elif (( $(bc <<< "$test > $k") ))
then
echo "output$k"
fi
Relational expressions evaluate to 0, if the relation is false, and 1 if the relation is true [source]. Note however that is a behavior of GNU bc
, and it is not POSIX
compiant.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…