Evitar salto de línea con echo
Muchas veces usamos literales combinados con variables para formar cadenas de texto. O mostramos por pantalla unos literales u otros en función de eventos. Y, en esas, y en otras situaciones, nos interesa mostrar por pantalla una única línea aunque el texto se esté generando en distintas partes del script.
Cuando queremos mostrar texto por pantalla usamos el comando echo. Pero si queremos mostrar varias cadenas, nos las divide en tantas líneas como cadenas, ya que si escribimos:
#!/bin/bash echo "Hola, " echo "mundo"
nos devuelve:
Hola, mundo
Para no generar un salto de línea con echo, podemos usar el modificador -n.
#!/bin/bash echo -n "Hola, " echo "mundo"
Devuelve:
Hola, mundo
O, si lo quieren probar de una forma más legible, pueden usar un sleep entre una y otra cadena:
#!/bin/bash echo -n "Hola," sleep 5 echo "mundo"
O, más bonito todavía, recorrer una cadena carácter a carácter y que echo escriba en la misma línea todos los caracteres, pero dejando un tiempo de espera entre carácter y carácter:
#!/bin/bash string="Hola, mundo" let len=${#string}-1 for (( pos=0; pos<=$len; pos++ )) do echo "${string:$pos:1}" sleep 0.3 done echo ""