我想这是一个两部分问题。我正在尝试编写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
答案 0 :(得分:0)
在bash中,要将变量作为整数进行比较,必须使用不同的比较运算符。以下是一些:
有关更多运算符,请参阅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