在Linux上,为什么不能'回声'使用ANSI颜色代码,但'打印'可以?

时间:2016-09-16 03:20:31

标签: linux bash shell redhat raspbian

作为练习,我制作了一个shell脚本,在屏幕上输出彩色信息。我试图使用ANSI颜色代码,但内容本身会输出。

我的代码:

#!/bin/bash
echo "\033[1;37;42m SUCCESS! \033[0m"

输出:

\033[1;37;42m SUCCESS! \033[0m

但是,使用'print'确实有效:

#!/bin/bash
print "\033[1;37;42m SUCCESS! \033[0m \n"

输出(白色字体+绿色背景):

SUCCESS!

我在Red Hat Enterprise Linux Server 6.5版(Santiago)和Raspbian Jessie Lite 4.4上进行了测试,结果相同。据我所知,从我所经历的所有搜索引擎结果来看,'echo'和'print'是相同的,除了'echo'包括换行符而'print'没有。为什么在这种情况下它会有所不同?

1 个答案:

答案 0 :(得分:2)

默认情况下,echo会将其解释为字符串。你必须告诉echo适当地解释反斜杠。

来自文档:

  

-e启用反斜杠转义的解释

echo -e "\033[1;37;42m SUCCESS! \033[0m"