2011-11-16 14 views
7

He escrito una pequeña secuencia de comandos en bash que analiza los archivos proporcionados o stdin si no se proporciona ningún archivo para producir algún resultado. Cuál es la mejor manera de redirigir la salida analizada a stdout (al final del script, el resultado se almacena en una variable). ¿Debo usar cat o echo, o hay otro método preferido?Creación de scripts en shell: cat vs echo para la salida

Respuesta

9

utilizar el comando printf:

printf '%s\n' "$var" 

echo es aceptable para los casos simples, pero puede comportarse de forma extraña para ciertos argumentos. Por ejemplo, echo tiene una opción -n que le indica que no imprima una nueva línea. Si $var pasa a ser -n, entonces

echo "$var" 

no imprime nada. Y hay varias versiones diferentes de echo (ya sea integradas en varias shells o como /bin/echo) con comportamientos sutilmente diferentes.

+1

+1. este consejo debería verse con más frecuencia –

3

echo es una buena manera de hacerlo. Tendrás que pasar por algunos aros si quieres que cat funcione.

3

echo. Usted tiene sus datos analizados en una variable, por lo que solo echo "$var" debería estar bien. cat se usa para imprimir el contenido de los archivos, que no es lo que quieres aquí.

+0

Este es un punto importante – niagr

Cuestiones relacionadas