如何比较 bash 中的浮点数

How can I compare floats in bash

正在编写脚本,但我目前遇到了困难。 (在这方面还是很新)

首先我有我的数据文件,我正在里面搜索的文件。 第一栏是姓名,第二栏是付钱,第三栏是欠钱。

customerData.txt

 name1,500.00,1000
 name2,2000,100
 name3,100,100.00

这是我的 bash 文件。基本上,如果欠款金额大于支付金额,则打印姓名。适用于任何不是浮动的东西。我也知道 bash 不处理浮点数,处理它们的唯一方法是使用 bc 实用程序,但我没有运气。

#!/bin/bash

while IFS="," read name paid owe; do
    #due=$(echo "$owe - $paid" |bc -1)
    #echo $due
    if [ $owe -gt $paid ]; then
        echo $name
    fi
done < customerData.txt

要打印第三列大于第二列的所有行:

$ awk -F, '>' customerData.txt 
name1,500.00,1000

工作原理

  • -F, 告诉 awk 这些列是 comma-separated.

  • > 告诉 awk 打印第三列大于第二列的任何行。

    更详细地说,> 是一个条件:它的计算结果为真或假。如果它的计算结果为真,则执行该操作。由于我们没有指定任何操作,awk 执行默认操作,即打印该行。