在sh和bash中输出彩色文本

时间:2014-07-01 21:23:10

标签: bash colors sh

通常我使用:

YELLOW=$(tput setaf 3)

在bash中实现了预期的效果,但我现在必须重写我的脚本才能在Unix平台上运行。所以我正在寻找一种解决方案,它将同时适用于sh和bash。

谢谢

1 个答案:

答案 0 :(得分:0)

一个解决方案而非依赖tput的解决方案是将您的脚本基于通用ANSI code sequences。您可以assign them with default values而不是生成这些序列。然而,这可能会给那些不支持这些序列的哑终端带来问题。

示例:

YELLOW="(ESC)[33m"
NORMAL="(ESC)[0m"

echo "${YELLOW}Yellow text.${NORMAL}"

(ESC)表示文字ESCAPE字符。你应该用真实的替换它。较旧的shell不支持$'\x'语法,但您可以直接指定ESCAPE char。