Warm tip: This article is reproduced from serverfault.com, please click

linux-除法无法在bash中正常工作

(Division does not work in bash)

发布于 2021-03-19 08:33:35

我想从文件中计算一些信息,但除法不起作用。如果我将更/改为+-,则此计算正确。有任何想法吗?

#!/bin/sh
    FILE=/tmp/stats

    for EMPTY in $(cat $FILE |sed '1!d'); do (echo "Empty Servers $EMPTY | Empty-Servers=$EMPTY;"); done
    for SERVERS in $(cat $FILE |sed '2!d'); do (echo "Total Servers $SERVERS | Total=$SERVERS;"); done

    PERCENT=$(((EMPTY / SERVERS)*100))
    echo $PERCENT
Questioner
Kjellson
Viewed
22
Håkan Lindqvist 2019-01-22 19:58:16

除法确实起作用了,只是壳只处理整数。

我认为你要么想要调用bc要么可以按自己喜欢的方式进行数学运算,或者适应处理整数的含义。

你能做什么,而不是例如:改变你的表达周围,这样你乘EMPTY100第一,然后通过分SERVERS即,$(((EMPTY * 100) / SERVERS))
(当然,这可能不如你希望的那么精确,但是它并不会始终产生0。)