Als Übung für Shell-Skripte habe ich ein Skript erstellt, um das "heutige Wetter" mithilfe der Wettervorhersage-API [Weather Hacks] von Livedoor (http://weather.livedoor.com/weather_hacks/webservice) zu überprüfen.
Außerdem habe ich versucht, den Ortsnamen anzugeben, damit die Wettervorhersage am gewünschten Punkt angezeigt wird.
sed
verwendet, um unnötige Teile abzukratzen.weather.sh
#!/bin/bash
# http://weather.livedoor.com/forecast/webservice/json/v1?
#Extrahieren Sie die Punktnamen und IDs, die mit den eingegebenen Ortsnamen übereinstimmen, aus der Punktdefinitionstabelle (RSS) im ganzen Land.
# http://weather.livedoor.com/forecast/rss/primary_area.xml
cityname_id=$(curl -s http://weather.livedoor.com/forecast/rss/primary_area.xml \
| sed "s/>/>\n/g" \
| grep city \
| sed "s/<city title=\"//g" \
| sed "s/\" source.*>//g" \
| sed "s/\" id=\"/,/g" \
| grep $1) \
#Wenn der entsprechende Ortsname vorhanden ist, erhalten Sie die Wettervorhersage für diese Stadt.
#Wenn die entsprechende Stadt nicht existiert, endet der Prozess.
if [ -z "$cityname_id" ]; then
echo 「$1 "Wettervorhersage wird nicht bereitgestellt. Bitte wählen Sie aus folgenden Städten.
echo ----------------------------------------
echo $(curl -s http://weather.livedoor.com/forecast/rss/primary_area.xml \
| sed "s/>/>\n/g" \
| grep city \
| sed "s/<city title=\"//g" \
| sed "s/\" id.*>//g")
else
# {Punktname,ID}Extrahieren Sie nur die ID aus der Zeichenfolge von.
city_id=$(echo $cityname_id | sed "s/.*,//g")
city_name=$(echo $cityname_id | sed "s/,.*//g")
echo $city_Name des heutigen Wetters:\
$(curl -s http://weather.livedoor.com/forecast/webservice/json/v1?city=${city_id} \
| jq '.forecasts[]' \
| jq -r 'select(.dateLabel=="heute").telop')
fi
Ausführungsergebnis (wenn die Wettervorhersage des angegebenen Ortsnamens vorliegt)
[root@akagi ~]# ./weather.sh Tokio
Das heutige Wetter in Tokio: sonnig
Ausführungsergebnis (wenn die Wettervorhersage des angegebenen Ortsnamens nicht existiert)
[root@akagi ~]# ./weather.sh Pinguindorf
Für "Penguin Village" wird keine Wettervorhersage bereitgestellt. Bitte wählen Sie aus folgenden Städten.
----------------------------------------
Wakauchi Asahikawa Rume Amisato Kitami Monbetsu Nemuro Kushiro Obihiro Muroran Urakawa Sapporo Iwamizawa Kuchiyasu Hakodat Esashi Aomori Mutsu Hachinohe Morioka Miyako Universität
Funawatari Sendai Shiraishi Akita Yokote Yamagata Yonezawa Sakata Shinjo Fukushima Onahama Wakamatsu Mito Tsuchiura Utsunomiya Otawara Maebashi Minakami Saitama Bär
Tani Chichibu Chiba Chiba Tateyama Tokio Oshima Hachijojima Vaterinsel Yokohama Odawara Niigata Nagaoka Takada Aikawa Toyama Fushiki Kanazawa Wajima Fukui Tsuruga Kofu Kawaguchiko Nagano Matsumoto Iida Gifu Takayama Shizuoka Amiyo Hamam Mishima Hamada Saigo Okayama Tsuyama Hiroshima Shohara Shimozeki Yamaguchi Yanai Hagi Tokushima Hiwasa Takamatsu Matsuyama Araihama U.
Wajima Kochi Kap Muroto Shimizu Fukuoka Yawata Iizuka Kurume Saga Imari Nagasaki Sasebo Sagebo Fukue Kumamoto Aso Otohime Ushifuka Hitoyoshi Oita Nakatsu Hida Saeki Miyazaki Nobuoka Miyazaki Takachiho Kagoshima Kagoshima Kagoshima Nago
Recommended Posts