Tengo el siguiente script:
#!/bin/bash
function consoleWriteLine() {
  echo $* >&2
}
consoleWriteLine "    indented by 4 spaces"Cuando lo ejecuto, obtengo el siguiente resultado:
$ ./test.sh
indented by 4 spaces¿A dónde fueron mis 4 espacios? ¿Y cómo los recupero?

consoleWriteLine. La segunda vez que esecho'd, el espacio en blanco necesita ser preservado nuevamente por comillas adicionales. Nunca hubiera adivinado que puedes poner citas$*.$*, la variante$@se creó específicamente para expandirse en palabras separadas cuando se cita:"$@"puede haber varios argumentos,"$*"siempre es solo uno.echoes uno de los pocos comandos donde no hay diferencia.Tuve este problema yo mismo,
Según este blog , debe cambiar el IFS, ya que de forma predeterminada contiene espacios en blanco y, por lo tanto, ve "xxx aaa zzzz" como 3 cadenas con espacios en blanco entre ellas.
IFS='\n'antes de que el comando lo arregle y desactive IFS para eliminar el cambio
unset IFSfuente