[PLUG] Broken Script, Help Please

Michael Barnes barnmichael at gmail.com
Thu Jul 17 04:56:51 UTC 2025


I have a script that is supposed to grab a weather feed and return the
current temperature. If grabs the file fine, but does not return the
temperature.

Here is the line that fails:

T=$(grep "<temp_f>" KEUG.xml |cut -c10- |cut -d '.' -f 1)

Here is the KEUG.xml file:
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet href="latest_ob.xsl" type="text/xsl"?>
<current_observation version="1.0" xmlns:xsd="
http://www.w3.org/2001/XMLSchema" xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="
http://www.weather.gov/view/current_observation.xsd"><credit>NOAA's
National Weather Service</credit><credit_URL>https://weather.gov/
</credit_URL><image><url>http://forecast.weather.gov/images/xml_badge.png</url><title>NOAA's
National Weather
Service</title><link>https://www.weather.gov</link></image><suggested_pickup>15
minutes after the
hour</suggested_pickup><suggested_pickup_period>60</suggested_pickup_period><location>Eugene,
Mahlon Sweet Field,
OR</location><station_id>KEUG</station_id><latitude>44.13333</latitude><longitude>-123.21444</longitude><observation_time>Last
Update on Jul 16 2025, 7:54 pm
PDT</observation_time><observation_time_rfc822>Wed, 16 Jul 2025 19:54:00
-0700</observation_time_rfc822><weather>Fair</weather><temperature_string>88.0
F (31.1
C)</temperature_string><temp_f>88.0</temp_f><temp_c>31.1</temp_c><relative_humidity>26</relative_humidity><wind_string>West
at 8.1 MPH (7
KT)</wind_string><wind_dir>West</wind_dir><wind_degrees>250</wind_degrees><wind_mph>8.1</wind_mph><wind_kt>7</wind_kt><pressure_string>1008
mb</pressure_string><pressure_mb>1008</pressure_mb><pressure_in>29.78</pressure_in><dewpoint_string>48.9
F (9.4
C)</dewpoint_string><dewpoint_f>48.9</dewpoint_f><dewpoint_c>9.4</dewpoint_c><heat_index_string>85
F (30
C)</heat_index_string><heat_index_f>85</heat_index_f><heat_index_c>30</heat_index_c><visibility_mi>10.00</visibility_mi><icon_url_base>
http://forecast.weather.gov/images/wtf/small/
</icon_url_base><two_day_history_url>
http://forecast.weather.gov/data/obhistory/KEUG.html
</two_day_history_url><icon_url_name>nskc.png</icon_url_name><ob_url>
http://forecast.weather.gov/data/METAR/KEUG.1.txt</ob_url><disclaimer_url>
https://www.weather.gov/disclaimer.html</disclaimer_url><copyright_url>
https://www.weather.gov/disclaimer.html</copyright_url><privacy_policy_url>
https://www.weather.gov/notice.html
</privacy_policy_url></current_observation>

I should get:

$ echo $T
88

Instead, I get:
$ echo $T
observation version="1

This has been working for several years. The script runs each hour, pulling
the weather statement and culling the current temperature. The remainder of
the script uses the variable to select the appropriate audio file to
announce the current temperature. I set this up about five years ago and my
feeble memory has no idea how it really works any more.

Any ideas on what went wrong where?

Thanks,
Michael


More information about the PLUG mailing list