显示度数符号 bash/tcl

显示度数符号 bash/tcl

我试图获取登录脚本来显示度数符号,但它没有显示它。

Here is the weather.sh
METRIC="1"  # 0 for F, 1 for C
# Fill in form to find your weather code here:
# http://netweather.accuweather.com/signup-page2.asp
# If code has a space remove it or replace it with %20 or a dash; -
LOCCOD="struer"  #Example: NAM|MX|MX009|MEXICO-CITY

if [ "$weather" != "0" ] ; then
  weather=`curl -s http://rss.accuweather.com/rss/liveweather_rss.asp\?metric\=${METRIC}\&locCode\=$LOCCOD \
  | grep -E '<description>(Currently|High)' \
  | sed -e 's/.*<description>\(.*\)/\1/' -e 's/\(.*\) &lt.*/\1/' -e 's/\(&#38;#176;\)//'`
  if [ "`echo "$weather" | wc -l`" -eq "3" ] ; then
    echo "Weather......: `echo "$weather" | head -1`"
    echo "Today........: `echo "$weather" | head -2 | tail -1`"
    echo "Tomorrow.....: `echo "$weather" | tail -1`"
  fi
fi

但当我登录时它只显示:&#176;C

但如果我这样做:echo $'\xc2\xb0'C在腻子中,它显示正常吗?

发生了什么事?我该如何解决?

答案1

这条评论是对的。

&#176;是 shell 无法识别或解释的 HTML 语句。您需要将其替换为您在示例中显示的可行序列echo

至少有两种方法:

  1. 具体方法:用sed已有的字符串替换此特定字符串。添加此脚本:

    -e 's/&#176;/°/'
    
  2. 一般方法:使用以下方法扩展许多可能的 HTML 主义recode

    curl … | grep … | sed … | recode html
    

    一般来说,您可能希望recode html在之后使用curl

答案2

希望可以重复使用该主题:)

 echo "  \e[35mWeather.......:\e[0m `echo "\e[36m$weather\e[0m" | head -1`"
    echo "  \e[35mToday.........:\e[0m `echo "\e[36m$weather\e[0m" | head -2 | tail -1`"
    echo "  \e[35mTomorrow......:\e[0m `echo "\e[36m$weather\e[0m" | tail -1`"

上面有一些错误,第一行显示正确的颜色,但接下来的几行没有

https://imgur.com/fmFjmZm

相关内容