如果我之前像这样定义了颜色变量:

txtred='\e[1;31m'

我将如何在 heredoc 中使用它:
    cat << EOM

    [colorcode here] USAGE:

EOM

我的意思是我应该写什么来代替 [colorcode here] 来呈现该用法
文字红色? ${txtred} 不起作用,因为这是我在整个过程中使用的
bash 脚本,在 heredoc 之外

最佳答案

您需要一些东西来解释 cat 不会做的转义序列。这就是为什么您需要 echo -e 而不仅仅是 echo 才能使其正常工作。

cat << EOM
$(echo -e "${txtred} USAGE:")
EOM

作品

但是你也不能通过使用 textred=$(tput setaf 1) 来使用转义序列,然后直接使用变量。
textred=$(tput setaf 1)

cat <<EOM
${textred}USAGE:
EOM

10-06 15:26