shell中比较两个变量之间的值!

cat cc.del
803000,0.30,0.41
801001,0.20,0.12
801004,0.20,0.43
805012,0.50,0.25
我想用if语句。现在写的是if [$a -gt $b] then echo "go" fi
其中的a,b对应文件的第二列和第三列。
a=`echo $line | awk -F ',' '{print $2}'`
b=`echo $line | sed 's/.*\(....\)$/\1/'`
但是现在压根就什么都没有。这个文件中第二列大于第三列的应该有两个,但是没有显示出来。
请问要如何写。才能让判断语句生效啊。

#问题原因:gt只能比较整数,浮点数应该按字符串比较
#正确写法如下:
#!/bin/sh
#输入参数:数据文件
if [ $# -ne 1 ]
then
    echo "Usage: $0 filename"
    exit
fi
#循环读取行
while read line
do
    a=`echo $line | awk -F ',' '{print $2}'`
    b=`echo $line | sed 's/.*\(....\)$/\1/'`
    
    #注意:以下>符号前的\不能少
    if [ "$a" \> "$b" ]
    then
        echo "go"
    fi
done < $1

希望能够帮助到你,你的好评是我前进的动力,谢谢!

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-04-12

你是想直接比较 2列数据 吧

awk -F ","  '$2<$3{print$0}' cc.del

这句是直接比较 第三列大于第二列则输出整行

如果想比较第三列大于第二列输出第一列 吧$0换成$1即可

如果只单纯输出go

awk -F ","  '$2<$3{system("echo go")}' cc.del

本回答被网友采纳
相似回答