2009-08-02 17 views
11

estoy editando alguien guiones más y veo s/él ha utilizado este \c muy a menudo comoEl uso de c en shell scripting

echo "bla bla \c" 

que cuando se utiliza simplemente imprime

bla bla \c 

en el pantalla.

Entonces, me preguntaba por qué usarlo o me puede estar perdiendo algo, porque no está haciendo nada en absoluto? Revisé los caracteres de escape y no encontré nada de eso. ¿Hay algún uso especial de \ c en scripts de shell, principalmente en shells bash y korn?

Respuesta

22

El \ c mantiene el cursor en la misma línea después del final del eco, pero que le permita, se necesita el indicador -e:

echo -e "bla bla \c" 
8

Creo que el intento es dar por terminado el eco sin nueva línea.

Si no funciona en su sistema, puede reemplazar esta manera,

echo "test \c"; echo " same line" 

puede llegar a ser,

echo -n "test"; echo " same line" 

Un cambio más fácil será (según lo sugerido por Neil, 1 existe),

echo -e "test \c"; echo " same line" 
+4

El uso de printf es más portátil que echo -n. –

+0

@William, estoy completamente de acuerdo. Pero, cuando está portando scripts, un truco breve como '-e' o' -n' funciona más rápido. – nik

1

Sin salto de línea automático, apparently:

Uso de comandos Unix

conchas

UNIX Korn utilizar el carácter \ c de escape para indicar la continuación (sin salto de línea automático):

echo "Introduzca la ruta al archivo de datos: \ c"

0

De hecho, el comportamiento de 'eco' varía según el caparazón utilizado.
Con un shell Bourne simple, '\ c' se interpretará por defecto (por lo que el cursor permanece en la línea).
Con Bash, no se interpreta de forma predeterminada (por lo que se muestra la cadena '\ c'), por lo que debe agregar la opción '-e' para habilitarlo.

2

POSIX establece que:

\ c reprimir la nueva línea <> que sigue de lo contrario el argumento final en la salida. Se ignorarán todos los caracteres que siguen a '\ c' en los argumentos .

Básicamente un POSIX XSI-conformes echo utilidad debe salir cuando encuentra una \ c, como se desprende de los siguientes comandos:

echo -e "foo bar \c baz" "quux" 
0

NOMBRE echo - Muestra una línea de texto

SINOPSIS eco [CORTO OPCIÓN] ... [cadena] ... eco LARGO DE OPCIONES

DESCRIPCIÓN Echo la (s) STRING (s) a la salida estándar.

-n  do not output the trailing newline 

    -e  enable interpretation of backslash escapes 

    -E  disable interpretation of backslash escapes (default) 

    --help display this help and exit 

    --version 
Cuestiones relacionadas