lunes, 6 de octubre de 2014

Coloreando la salida de un ShellScript Linux

Continuando con el proyecto JARVIS de transformación de texto a voz, os paso el código fuente de un ShellScript para Linux en el que se han introducido algunos modificadores para ofrecer una salida por consola en diferentes colores. De este modo, conseguiremos diferenciar mejor qué es texto del propio software y cuál es el que ha sido introducido por el usuario para ser emitido posteriormente en formato sonoro.

Adicionalmente, para acelerar y simplificar la interacción con el script se ha incluido un pequeño menú con las funciones más básicas de respuesta, pregunta y emisión de mensajes.

#!/bin/bash

function colorea()
{
#La siguiente línea colorea el texto a emitir
#pasado como parámetro
echo -e '\E[37;44m'"\033[1m$1\033[0m"

#El color es texto blanco sobre fondo azul
}

function texto()
{
#La siguiente línea colorea el texto
#pasado como parámetro
echo -e '\E[37;45m'"\033[1m$1\033[0m"

#El color es texto blanco sobre fondo morado
}

function menu()
{
clear
echo "*************************"
echo "*  ¿QUÉ QUIERES DECIR?  *"
echo "*************************"
echo " 1 - Sí "
echo " 2 - No "
echo " 3 - No lo sé "
echo " 4 - Tengo una duda "
echo " 5 - Quiero responder "
echo " 6 - Quiero decir algo..."
echo " x - Salir"
}


function habla()
{
    echo
    colorea "$1"   
    echo "$1" | iconv -f utf-8 -t iso-8859-1 | festival --tts
   
   
}

function duda()
{
    clear   
    texto "Introduce tu PREGUNTA, cuando pulses INTRO se emitirá: "
    read pregunta
    habla "Mi pregunta es: $pregunta"
    habla "Vuelvo a repetirla"
    habla "$pregunta"
}

function respuesta()
{
    clear
    texto "Introduce tu REPUESTA, cuando pulses INTRO se emitirá: "
    read respuesta
    habla "Mi respuesta es: $respuesta"
    habla "repito"
    habla "$respuesta"
}

function deciralgo()
{
    clear
    texto "Introduce tu MENSAJE: "   
    read mensaje
    habla "Tengo algo que decir:"
    habla "$mensaje"
    habla "Lo repetiré una vez más"
    habla "$mensaje"
}

clear
iniciosonido="Sintetizador activado y en espera. pulsa x para terminar"
habla "$iniciosonido"

echo


opcion=""
while [ "$opcion" != "x" ]
do
   
    menu   
    read -p "Indica qué quieres decir: " opcion
    case $opcion in
        1)colorea "Sí";habla "Sí";;
        2)colorea "No";habla "No";;
        3)colorea "No lo sé";habla "No lo sé";;
        4)duda;;
        5)respuesta;;
        6)deciralgo;;
        x)echo "Sintetizador detenido"; echo "Sintetizador detenido" | iconv -f utf-8 -t iso-8859-1 | festival --tts;;
        *)echo "Opción no válida, vuelve a intentarlo";;
    esac

done





No hay comentarios: