linux shell实现自动获取某地的天气和空气质量
2015-07-01 22:46
483 查看
因为工作需要,实现了一个自动获取某地天气和空气质量的shell程序。
这里记录下,也让自己记住,在使用sed带参数的时候要用’${parameter_name}’才能被sed解析。
下面又对程序进行了改良,使用函数方式进行调用
#!/bin/bash #时间:2015-6-21 #This module using to get the weather of Henan, from webpage:http://www.weather.com.cn/html/province/henan.shtml echo "Program starting..." ############################################################# #以下是变量定义,定义省(拼音和中文),市(拼音和中文) province='河南' province_PY='henan' city='郑州' city_PY='zhengzhou' ############################################################# #以下是传出的变量,可以直接使用 #weather_state #天气质量 #temperature1 #最高天气温度 #temperature2 #最低天气温度 #city_air #天气质量 #city_pm25 #pm2.5指数 #city_aqi #aqi指数 ############################################################# #Module 1, Wget the webpage from internet and saved as weather in current directory. echo "Getting the weather from webpage..." #The url where get the weather page. This page is from China Meteorologic Administration, Henan. url="http://www.weather.com.cn/html/province/"$province_PY".shtml" #date_doay is today's date, such as 2015-06-27 date_today=$(date +'%Y-%m-%d') logFile=$date_today.log wget -O - $url > weather_province echo "Got the weather file from internet." #Module 2, Analysize the weather file and getting the information echo "Getting the weather information..." #Geting the line where include the weather sed -n '/'${city}'天气预报/p' weather_province > province.weather echo " Province weather file created." #As all the information at one line, replace <dl> as \n, making a city at a line sed -n '/<dl>/p' province.weather | sed 's/<dl>/\n/g' > city.weather echo " Citys weather file created." #Geting the city weather as format lines sed -n '/'${city}'/p' city.weather | sed 's/</\n</g' > one_city.weather echo " city Weather file created." #Analysize from the file to get the state information and temputer echo " Anaysizing the weather state" weather_state=$(sed -n '/img alt/p' one_city.weather | awk -F '"' '{print $2}' | sed -n '1p') echo "The weather state is " $weather_state #Getting the tempture sed -n '/℃/p' one_city.weather | awk -F '>' '{print $2}' tempture1=$(sed -n '/℃/p' one_city.weather | awk -F '>' '{print $2}' | sed -n '1p') tempture2=$(sed -n '/℃/p' one_city.weather | awk -F '>' '{print $2}' | sed -n '2p') echo "The high tempture is " $tempture1 echo "The low tempture is " $tempture2 ####################################################################### #以下的功能寻找天气质量 #Getting the weather quality from http://www.pm25.com//XX.html echo " Getting the file from http://www.pm25.com//xx.html" air_url="www.pm25.com/"$city_PY.html wget -O - $air_url > city.air city_air=$(sed -n '/全部监测点/p' city.air | awk -F '"' '{print $12}') echo "The city air is " $city_air city_pm25=$(sed -n '/全部监测点/p' city.air | awk -F '"' '{print $10}') echo "The city pm 2.5 figure is: " $city_pm25 city_aqi=$(sed -n '/全部监测点/p' city.air | awk -F '"' '{print $8}') echo "The city's air AQI index is:" $city_aqi
这里记录下,也让自己记住,在使用sed带参数的时候要用’${parameter_name}’才能被sed解析。
下面又对程序进行了改良,使用函数方式进行调用
#!/bin/bash #时间:2015-6-21 #版本1.1,时间2015-7-6,更改脚本为函数调用式 #author: Lion Lan ########################################################## #GetWeatherAir函数说明: #功能,传入省市的信息,得到该城市的天气和空气参数 #1、参数说明 # 需要传递四个变量 省中文名称 省拼音 市中文名称 市拼音 # 调用示例 GetWeatherAir 河北 hebei 唐山 tangshan #2、函数使用 # 默认函数中使用echo测试打印了取得的值(见注释部分2),实际使用中可以注释掉echo语句直接重定向输出使用 ########################################################## function GetWeatherAir() { #This module using to get the weather of one province, such as from webpage:http://www.weather.com.cn/html/province/henan.shtml echo "Program starting..." ############################################################# #以下是变量定义,定义省(拼音和中文),市(拼音和中文) province=$1 province_PY=$2 city=$3 city_PY=$4 ###########################注释部分2################################## #以下是传出的变量,可以直接使用 #weather_state #天气质量 #temperature1 #最高天气温度 #temperature2 #最低天气温度 #city_air #天气质量 #city_pm25 #pm2.5指数 #city_aqi #aqi指数 ############################################################# #Module 1, Wget the webpage from internet and saved as weather in current directory. echo "Getting the weather from webpage..." #The url where get the weather page. This page is from China Meteorologic Administration, Henan. url="http://www.weather.com.cn/html/province/"$province_PY".shtml" #date_doay is today's date, such as 2015-06-27 date_today=$(date +'%Y-%m-%d') logFile=$date_today.log wget -O - $url > weather_province echo "Got the weather file from internet." #Module 2, Analysize the weather file and getting the information echo "Getting the weather information..." #Geting the line where include the weather sed -n '/'${city}'天气预报/p' weather_province > province.weather echo " Province weather file created." #As all the information at one line, replace <dl> as \n, making a city at a line sed -n '/<dl>/p' province.weather | sed 's/<dl>/\n/g' > city.weather echo " Citys weather file created." #Geting the city weather as format lines sed -n '/'${city}'/p' city.weather | sed 's/</\n</g' > one_city.weather echo " city Weather file created." #Analysize from the file to get the state information and temputer echo " Anaysizing the weather state" weather_state=$(sed -n '/img alt/p' one_city.weather | awk -F '"' '{print $2}' | sed -n '1p') echo "The weather state is " $weather_state #Getting the tempture sed -n '/℃/p' one_city.weather | awk -F '>' '{print $2}' temperature1=$(sed -n '/℃/p' one_city.weather | awk -F '>' '{print $2}' | sed -n '1p') temperature2=$(sed -n '/℃/p' one_city.weather | awk -F '>' '{print $2}' | sed -n '2p') echo "The high temperature is " $temperature1 echo "The low temperature is " $temperature2 ####################################################################### #以下的功能寻找天气质量 #Getting the weather quality from http://www.pm25.com//XX.html echo " Getting the file from http://www.pm25.com//xx.html" air_url="www.pm25.com/"$city_PY.html wget -O - $air_url > city.air city_air=$(sed -n '/全部监测点/p' city.air | awk -F '"' '{print $12}') echo "The city air is " $city_air city_pm25=$(sed -n '/全部监测点/p' city.air | awk -F '"' '{print $10}') echo "The city pm 2.5 figure is: " $city_pm25 city_aqi=$(sed -n '/全部监测点/p' city.air | awk -F '"' '{print $8}') echo "The city's air AQI index is:" $city_aqi } #####################测试函数################################### GetWeatherAir 河南 henan 周口 zhoukou
相关文章推荐
- Shell中的&&与||的区别
- shell循环语句
- shell中使用>/dev/null 2>&1 丢弃信息
- bash array
- Android Busybox 下的adb,linux shell命令整理备忘 (2012-03-06 21:41:27)
- Shell常用招式大全之入门篇
- aspxshell下突破无可写可执行目录执行cmd
- 在C#中运行PowerShell
- WindowsAzure Powershell脚本定时启动关机Azure VM
- shell判断和比较
- linux下添加需要开机执行的自定义shell脚本
- shell变量详解
- shell脚本(二)
- shell变量说明
- BASH 进阶(转载防丢)
- shell查找文件并删除
- “UEFI虚拟机”以及“EFI SHELL”介绍
- shell脚本echo的换行操作
- shell 监控文件更新并同步到其它机器
- Shell脚本之数组