Desde que me lembro, usei pessoalmente o seguinte método para alterar a cor do texto de saída ao usar o bash:
red=$'\033[1;31m'
nc=$'\033[0m'
echo "${red}This is red text$nc"
Sempre funcionou para mim, não importa se usado no macOS ou no Linux. Por curiosidade, para entender melhor porque funciona, pesquisei um pouco e encontrei algumas respostas/exemplos que não incluem $
( red='\033[1;31m'
). Após alguns testes, se eu não usar $
, a cor de saída não muda para vermelho, apenas imprime a string. No entanto, ao executá-lo usando sh
em vez de bash
, o texto muda de cor. Alguém pode me ajudar a entender o porquê disso?
Além disso, testei com aspas duplas em vez de aspas simples, e parece funcionar apenas ao usar sh
. Vou postar exemplos abaixo.
Este é o script e o código que usei:
#!/bin/bash
red=$'\033[1;31m'
nc=$'\033[0m'
echo "${red}Test 1$nc"
echo ""
##########################
red=$"\033[1;31m"
nc=$"\033[0m"
echo "${red}Test 2$nc"
echo ""
##########################
red='\033[1;31m'
nc='\033[0m'
echo "${red}Test 3$nc"
echo ""
##########################
red="\033[1;31m"
nc="\033[0m"
echo "${red}Test 4$nc"
echo ""
Saída no macOS com bash e sh:
Saída no Linux com bash e sh: