sbh7600 Asked: 2019-12-05 10:49:51 +0800 CST2019-12-05 10:49:51 +0800 CST 2019-12-05 10:49:51 +0800 CST bash颜色不起作用 772 我对颜色有一些问题。它在一条线上工作正常,但在另一条线上却不行 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`" bash colors 1 个回答 Voted Best Answer user1686 2019-12-05T11:16:30+08:002019-12-05T11:16:30+08:00 逐步完成您自己的代码。 当您有一个多行变量并执行此操作时: "\e[36m$weather\e[0m" 它添加到整个变量\e[36m的开头。它不会将代码添加到该变量中每一行的开头;刚到第一行。所以输出是这样的: \e[36m目前在 Struer, DK:8 °C 多云 高:9 C 低:7 C 多云 高:8 C 低:8 C 多云,有阵雨;有风\e[0m 所以当你只取第 2 行或第 3 行时,它们不会附带颜色代码,因为那里没有任何东西。为了让它按照你想要的方式工作,交换操作——首先提取你想要的行,然后在结果中添加颜色代码: echo " \e[35mToday.........:\e[0m \e[36m$(echo "$weather" | head -2 | tail -1)\e[0m"
逐步完成您自己的代码。
当您有一个多行变量并执行此操作时:
它添加到整个变量
\e[36m
的开头。它不会将代码添加到该变量中每一行的开头;刚到第一行。所以输出是这样的:所以当你只取第 2 行或第 3 行时,它们不会附带颜色代码,因为那里没有任何东西。为了让它按照你想要的方式工作,交换操作——首先提取你想要的行,然后在结果中添加颜色代码: