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.echo
es 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 IFS
fuente