Como usar o comando read com pergunta e variável?

1

Como posso usar o comando read para poder usar cores em parte do texto e variáveis sem usar o comando --dialog no shell script do linux?

Exemplo eu preciso de uma pergunta para aparecer assim no script bash:

Esta versão está ok ?: 1.0.1 (o número está na cor verde)

Minha tentativa até agora:

Version=1.0.1
textGreen='\e[1;92m' # Green
noColor='3[0m' # No color
read -p "Is this version ok?: ${textGreen} ${Version} ${noColor} (y/n)" -n 1 -r
if [[ $REPLY =~ ^[Yy]$ ]]
then
...

Isso não funciona, mostra variável e não o número e nenhuma cor. Obrigado.

    
por Byakugan 01.03.2016 / 15:42

2 respostas

1

Seus códigos de cores estão bem, só não tenho certeza se a leitura suporta saída colorida.

Eu divido sua leitura em dois comandos, um para imprimir a pergunta e um para receber a resposta:

Version=1.0.1
textGreen='\e[92m'
noColor='\e[0m'
echo -e "Is this version ok?: ${textGreen}${Version}${noColor} (y/n)"
stty raw
REPLY=$(dd bs=1 count=1 2> /dev/null)
stty -raw
if [[ $REPLY =~ ^[Yy]$ ]]
then
...

echo suporta saída colorida com a opção -e. Agora estou usando um pequeno hack para capturar um caractere de entrada bruta no terminal.

    
por 01.03.2016 / 16:48
3

Você está instruindo o read a exibir um prompt que contenha barra invertida e colchetes, etc., para exibir um prompt que contenha barra invertida e colchetes, etc. Passe uma sequência de prompts que contenha caracteres de escape reais. A maneira mais fácil de fazer isso é com cotação em cotação do dólar .

textGreen=$'\e[1;92m' # Green
noColor=$'3[0m' # No color
    
por 02.03.2016 / 02:01