【发布时间】:2014-06-18 10:30:26
【问题描述】:
奇怪的问题。当我在 Bash 中设置一个变量以显示为某种颜色时,我不知道如何重置它。这是一个例子:
先定义颜色代码:
YELLOW=$(tput setaf 3)
RESET=$(tput sgr0)
现在设置错误消息变量和它的颜色部分。
ERROR="File not found: "$YELLOW"Length.db$RESET"
这会将变量 ERROR 设置为要从最终将显示在终端上的函数返回的错误消息。除文件名外,错误将全为白色。文件名为用户突出显示为黄色。
这很好用,除非使用 rsyslog 进行记录。当错误消息被记录时,它会出现如下内容:
找不到文件:#033[33mLength.db#033(B#033[m
这显然使日志文件非常难以阅读。起初我想我可以在输出到终端后但在记录之前立即使用 sed 处理错误消息,但没有什么可搜索和替换的。即,我认为我可以使用 sed 来做类似的事情:
ERROR=$(echo "$ERROR" | sed -r 's%\#033\[33m%%')
但是当您回显变量时,这些字符不存在(这是有道理的,因为您在终端上看不到它)。所以我卡住了。我不知道如何在设置后重置变量的颜色。我还尝试使用 $RESET 以某种方式反转该过程,但可能是我的语法错误或其他原因。
【问题讨论】: