Here documents

Los here documentes proporcionan un modo especial para transmitir entradas a un comando a partir de un script shell. Estos documentos permiten la ejecución de comandos como si estuviese leyendo desde un archivo o desde el teclado, cuando lo que realmente está haciendo es obtener entradas del script.

Un here document comienza con << seguido de una secuencia de caracteres especial que se repite al final del documento. << es la etiqueta de desvío de la shell, que hace que la entrada de comando sea un here document. Esta secuencia especial actúa como marcador  para indicarle a la shell dónde finaliza el here document. La secuencia de marcador no debe aparecer en las líneas que se transmiten al comando, por eso es mejor que sea fácil recordarlas y, para tal fin, poco comunes.

Uso de here documents

El ejemplo más sencillo es proporcionar entradas al comando cat:

heredocument_salidaEste script proporciona la salida:

heredocumentLos here documents pueden parecer una prestación un tanto curiosa, pero son muy potentes porque le permiten invocar un programa interactivo como un editor y proporcionarle alguna entrada predefinida. Sin embargo, se suelen usar para enviar grandes cantidades de texto desde dentro del script, tal como vimos previamente, y para evitar tener que usar sentencias echo en cada línea. Puede usar símbolos de exclamación (¡!) a cada lado del identificador para que no haya confusión.

Si queremos procesar varias líneas de un archivo siguiendo un modo predeterminado, puede usar el editor de línea ed y proporcionarle comandos de un here document en un script shell.

Otro uso del here document

Comenzaremos creando un archivo de texto llamado a_text_file que contenga las siguientes líneas:

heredocument_1

Puede editar este archivo usando una combinación de un here documente y el editor ed:

heredoc_1Si ejecuta este script, el archivo contendrá la siguiente información:

salida_heredocumentCómo funciona

El script shell lo único que hace es invocar al editor ed y transmitirle los comandos que necesita para pasar a la tercera línea, eliminarla, y despues reemplazarla con el contenido de la línea actual (como se eliminó la línea 3, la línea actual es ahora lo que era la última línea). Estos comandos ed provienen de las líneas del script que forman el here document, las líneas entre los marcadores !FunkyStuff!.

heredocument_notaatras

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s