查天气的脚本
这一版使用新浪的数据
[php]
[No.509 13:51:03 apache2 ]# cat /linux/xuexi/bash/myweather2.sh
#! /bin/bash
# * * * * * * * * * * * * * * * * * * * * * * * * * * * *
# 程序名:myweather.sh #
# 功 能:通过 http://weather.sina.com.cn/查询天气 #
# 参 数: -d 删除; -n 更新天气,如果不用此参数 #
#+ 将使用旧的数据文件 #
# 作 者:li-jiahuan@sohu.com #
# 日 期:05/12/14 #
# * * * * * * * * * * * * * * * * * * * * * * * * * * * *
dir=/tmp/weather
down=$dir/temp.html
data=$dir/temp.data
temp=$dir/temp.tmp
web="http://weather.sina.com.cn/images/figureWeather/map/wholeNation.html"
[[ ! -d $dir ]] && mkdir $dir
usage()
{
echo
echo Usage `basename $0` [-n] [-d] [city] [city ... ]
echo Version: 0.1
cat <<-CITY
Valid City:
上海 香港 兰州 北京 南京 南宁 南昌 哈尔滨
合肥 长沙 台北 天津 太原 广州 成都 拉萨
昆明 杭州 武汉 沈阳 济南 海口 澳门 石家庄
福州 西宁 西安 贵阳 郑州 重庆 银川 长春
呼和浩特 乌鲁木齐
CITY
echo
exit 0
}
# 从网上下载页面,并整理
getdata()
{
wget -O $down $web > /dev/null 2>&1
grep "城市" $down | sed 's/.*\(城市\)/\1/' | sed 's/.).*//g' | sed 's/ //g' > $data
}
# 以城市名为参数查找
getweather()
{
city=$1
echo
grep "$city" $data | awk -F'<br>' 'BEGIN{OFS="\n"}{print $1,$2,$3,$4,$5}' | tee $temp
if [[ ! -s $temp ]];then
echo City "$city" not found.
fi
echo
}
# * * * * MAIN * * * * *
if [[ $# == 1 ]] && [[ $1 == -n ]];then
getdata
set "长春" "海口"
fi
# 如果没有参数,设置默认参数
[[ -z $1 ]] && set "长春" "海口"
# 如果没发现以前的数据文件,则下载
[[ ! -f $data ]] && getdata
[[ $1 == "-h" ]] || [[ $1 == "--help" ]] && usage
if [[ $1 == "-d" ]];then
echo "Deleting $dir ..."
rm -rf $dir
echo -e "Done. \n"
exit 0
fi
# 循环判断参数
while(( $# > 0));do
if [[ $1 != "-n" ]];then
getweather $1
shift
else
getdata
getweather $2
shift 2
fi
done
exit 0
[/php]