Re: Bug en el comando echo

2004-07-28 Por tema César Rincón
On Wed, 2004-07-28 at 15:42, Pepe Aracil wrote:
 El otro dia me estuve peleando con el comando echo para imprimir la 
 cadena -e y nada que no hay manera.
[...]
 Esto es claramente un bug del comando echo y parece mentira que esto no 
 esté solucionado... o ¿Habre sido Yo el primero en darme cuenta?

Je.  No, eso no es un bug en echo.  Es un comportamiento extraño, pero
es por diseño y está documentado.  Ve el manual builtins(7) (estoy
asumiendo que estás usando el echo incluido en bash, no /bin/echo).

Antes que otra cosa, nota que tus experimentos con las comillas no hacen
ninguna diferencia para echo.  Las comillas las procesa y las elimina el
shell antes de ejecutar el comando (ve bash(1) para más detalles).

La manera de hacer lo que quieres habría sido, normalmente, usar --
para indicar el fin de las opciones, de manera similar a esto:

  echo -- -e

Sin embargo, el manual dice específicamente
echo does not interpret -- to mean the  end  of  options.  No tengo
idea de porqué funciona así, pero me imagino que es por compatibilidad
con UNIX o con POSIX.

Así pues, usar los escapes activados por -e es, en efecto, la única
manera de hacer que echo imprima exactamente -e.  Como alternativas,
si no te importa meter un espacio de mas, puedes hacer

  echo ' -e'
  echo '-e '

con los resultados que cabría esperar.  O puedes simplemente usar

  printf -- -e

Salud.

 -CR




Re: Bug en el comando echo

2004-07-28 Por tema César Rincón
On Wed, 2004-07-28 at 16:55, César Rincón wrote:
 Así pues, usar los escapes activados por -e es, en efecto, la única
 manera de hacer que echo imprima exactamente -e.

Hum.  Un día aprenderé a pensármelo dos veces antes de soltar
afirmaciones categóricas como esa.

  echo -ne '-e\n'

O sin el salto de línea final:

  echo -e '-e\c'

 -CR