Estoy aburrido, y decidí escribir un script para una aventura mía basada en texto usando bash. Básicamente, se supone que debe animar una máquina de escribir en ciertos casos para contar historias dramáticas. Puedo hacerlo manualmente en un archivo como el siguiente:bash: leer texto de una cadena de un carácter a la vez, con espacios en blanco
sleep 0.1
echo -n "h"
sleep 0.1
echo -n "e"
sleep 0.1
echo -n "l"
sleep 0.1
echo -n "l"
sleep 0.1
echo -n "o"
Como se puede imaginar, es tremendamente tedioso. En cambio, quiero extraer caracteres de una cadena (o archivo) un carácter a la vez, y aplicar el comando dormir a cada personaje.
Hasta ahora, tengo lo siguiente, que se lee de un archivo. IFS = permite retener los espacios, pero no cualquier otro tipo de espacio en blanco (como nueva línea).
IFS=
while read -n1 achar
do
echo $achar
done < aFile
¿Hay alguna manera de que pueda usar esto para obtener todos los espacios en blanco? Como una pregunta de bonificación, ¿puede decirme cómo aplicar esto a un script definido por el usuario, para que no tenga que leer desde un archivo separado? Entonces, por ejemplo, digamos que tengo una cadena llamada "hola", y simplemente puedo pasarla a mi función para animarla como una máquina de escribir cada vez que ejecuto mi archivo en la terminal de bash.
Cualquier ayuda sería apreciada. ¡Gracias!
¿Qué hay de convertir las nuevas líneas de espacios utilizando 'tr (1)'? – g13n
Si entiendo correctamente la página man, ¿uso la opción tr [: print:]? – derp
+1 solo porque decidiste luchar contra el aburrimiento con bash-scripting :) –