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