окраска в heredocs, Баш


Если я ранее определил переменную цвета следующим образом:

txtred='e[1;31m'

Как бы я использовал его в heredoc :

    cat << EOM

    [colorcode here] USAGE:

EOM

Я имею в виду, что я должен написать вместо [colorcode here], чтобы передать это использование текст красный? ${txtred} не будет работать, так как это то, что я использую во всем моем сценарий bash, вне heredoc

1 3

1 ответ:

Вам нужно что-то, чтобы интерпретировать последовательность побега, что cat не будет делать. Вот почему вам нужно echo -e вместо просто echo, чтобы заставить его работать нормально.

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

Работает

Но вы также можете не использовать escape-последовательности, используя textred=$(tput setaf 1), а затем просто использовать переменную напрямую.

textred=$(tput setaf 1)

cat <<EOM
${textred}USAGE:
EOM