Bash脚本字符串比较运算符

时间:2015-11-11 02:31:38

标签: linux bash

我想这是一个两部分问题。我正在尝试编写if语句从网站中删除并且是字​​符串的语句。但是我希望它们是整数,所以我可以使用整数比较。但是,我可以在网上找到的信息基本上没有结果,只要将值转换为整数。如果我使用“> =”并且在使用“=”时没有错误,我会留下这个产生错误的代码。那么有没有办法将字符串转换为int?如果没有,我怎么能写这个没有错误执行,为什么我收到当前构造的错误?

 #!/bin/bash

    webpage=$(curl http://w1.weather.gov/xml/current_obs/KPNE.xml | grep 'visibility_mi>')
    webpage2=$(curl http://w1.weather.gov/xml/current_obs/KPNE.xml | grep '<weather>')

    #Test code:
    #echo $webpage
    #echo $webpage2

        extrct=${webpage%</*}
        extrct=${extrct##*>}

        extrct2=${webpage2%</*}
        extrct2=${extrct2##*>}

        echo -en '\n'
        echo ===============================================
        echo Output Variables Values testing purposes:
        echo $extrct   
        echo $extrct2 
        echo ===============================================  
        echo -en '\n'          

            if [[ $extrct2 == 'Rain' ]]
            then 
                echo 'Rain!'
            elif [[ $extrct2 == 'Snow' ]]
            then
                echo 'Snow!'

                elif [ $extrct >= '7' ]
                then
                    echo 'All Clear!'
                elif [ $extrct >= '4' and < '7' ]
                then
                    echo 'Limited Visibility'
                elif [ $extrct < '4' ]
                then
                    echo 'Very Low Visibility!'
            fi


    read 

1 个答案:

答案 0 :(得分:0)

在bash中,要将变量作为整数进行比较,必须使用不同的比较运算符。以下是一些:

  • -gt =大于
  • -ge =大于或等于
  • -eq等于

有关更多运算符,请参阅http://tldp.org/LDP/abs/html/comparison-ops.html。请注意,所有变量仍然存储为字符串。

编辑:这是一个固定的if语句:

            elif [ $((extrct)) -ge 7 ]
            then
                echo 'All Clear!'
            elif [ $((extrct)) -ge 4 -a $((extrct)) -lt 7 ]
            then
                echo 'Limited Visibility'
            elif [ $((extrct)) -lt 4 ]
            then
                echo 'Very Low Visibility!'
        fi