bash 颜色不起作用

bash 颜色不起作用

我对颜色有些问题。它在一行上工作正常,但在另一行上却不行

 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`"

在此处输入图片描述

答案1

一步一步地检查你自己的代码。

当您有一个多行变量并且执行以下操作时:

"\e[36m$weather\e[0m"

它增加\e[36m了开头整个变量。它不会将代码添加到该变量中每一行的开头;只添加到第一行。因此输出如下所示:

\e[36分钟Struer, DK 当前气温:8 °C,多云
最高温度:9 C 最低温度:7 C 多云
最高温度:8 C 最低温度:8 C 多云,有阵雨,有风\e[0m

所以当你只乘坐第二或第三条线时,他们不要附带颜色代码,因为那里没有任何东西可以做到这一点。为了使其按您想要的方式工作,请交换操作 - 首先提取您想要的行,然后为结果添加颜色代码:

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

相关内容