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

catcc.del803000,0.30,0.41801001,0.20,0.12801004,0.20,0.43805012,0.50,0.25我想用if语句。现在写的... 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/'`
但是现在压根就什么都没有。这个文件中第二列大于第三列的应该有两个,但是没有显示出来。
请问要如何写。才能让判断语句生效啊。
展开
 我来答
Linyar
推荐于2016-12-02 · TA获得超过757个赞
知道小有建树答主
回答量:180
采纳率:100%
帮助的人:250万
展开全部
#问题原因: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

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

百度网友6c0f575
推荐于2018-04-12 · TA获得超过520个赞
知道小有建树答主
回答量:533
采纳率:0%
帮助的人:508万
展开全部

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

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

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

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

如果只单纯输出go

awk -F ","  '$2<$3{system("echo go")}' cc.del
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式