2012-01-19 10 views
9

Sé que este es un tipo de problema de carácter especial, pero no sé cómo resolverlo.haciendo eco en shell -n no se imprime correctamente

que escriba en la consola

echo "-n" 

y nada se imprimen :(

también probé con

echo -e "-n" 

para ejecutar los caracteres especiales (el que se escapó de la secuencia), pero de nuevo nada sucedió

¿cómo puedo imprimir "-n"?

+2

impresionante que nunca he encontrado con este problema. ¡Bien! – wallyk

Respuesta

5

Aquí es una manera:

[email protected]:~$ echo -e '\x2dn' 
-n 

Se escapa de la - como \x2d.

Un modo más detallado es imprimir los dos personajes por separado:

[email protected]:~$ echo -n -; echo n 
-n 

Aquí, el -n instruye el primer echo que se imprime una nueva línea; no está relacionado con la impresión del -n. :)

+0

La definición de eco de POSIX no garantiza que esto funcione. De hecho, cualquier implementación donde 'echo -e' no imprime' -e' en su salida está violando el estándar, por el cual '-n' es la única opción permitida [y, aunque está permitido, no está bien definido:' echo -n' simplemente hace que la salida esté indefinida, por lo que ya no es necesario cumplir con ninguna especificación particular]. –

+0

En bash, 'shopt -s xpg_echo' hace que su estándar' echo' sea compatible cuando 'set -o posix' también está habilitado, lo que significa que el hack' echo -e' dado aquí ya no funcionará. –

11

Trate

printf "%s\n" -n 

o

printf "%s\n" '-n' 
+2

Sí, 'printf' es más poderoso y consistente que' echo'. –

Cuestiones relacionadas