Estaciones de trabajo en línea OnWorks Linux y Windows

Logotipo

Alojamiento gratuito en línea para estaciones de trabajo

<Anterior | Contenido | Siguiente>

Aquí Documentos

Hemos analizado dos métodos diferentes para generar nuestro texto, ambos usando el echo com


mand. Hay una tercera forma llamada aquí documento or aquí guión. Un documento aquí es una forma adicional de redirección de E / S en la que incrustamos un cuerpo de texto en nuestro script y lo introducimos en la entrada estándar de un comando. Funciona así:

comando << ficha

texto

ficha

donde comando es el nombre del comando que acepta entrada estándar y ficha es una cadena que se utiliza para indicar el final del texto incrustado. Modificaremos nuestro script para usar un documento aquí:



#! / Bin / bash


# Programa para generar una página de información del sistema


TITLE = "Informe de información del sistema para $ HOSTNAME" CURRENT_TIME = $ (fecha + "% x% r% Z")

TIMESTAMP = "Generado $ CURRENT_TIME, por $ USER"


gato << _EOF_

$ TITLE

$ TITLE

$ TIMESTAMP

_EOF_

#! / Bin / bash


# Programa para generar una página de información del sistema


TITLE = "Informe de información del sistema para $ HOSTNAME" CURRENT_TIME = $ (fecha + "% x% r% Z")

TIMESTAMP = "Generado $ CURRENT_TIME, por $ USER"


gato << _EOF_

$ TITLE

$ TITLE

$ TIMESTAMP

_EOF_


En lugar de usar echo, nuestro script ahora usa gato y un documento aquí. La cuerda _EOF_ (que significa "Fin de archivo", una convención común) se seleccionó como el token y marca el final del texto incrustado. Tenga en cuenta que el token debe aparecer solo y que no debe haber espacios al final de la línea.

Entonces, ¿cuál es la ventaja de usar un documento aquí? Es casi lo mismo que echo, excepto que, por defecto, las comillas simples y dobles dentro de estos documentos pierden su significado especial para el shell. Aquí hay un ejemplo de línea de comando:



[yo @ linuxbox ~] $ foo = "algo de texto"

[yo @ linuxbox ~] $ gato << _EOF_

> $ foo

[yo @ linuxbox ~] $ foo = "algo de texto"

[yo @ linuxbox ~] $ gato << _EOF_

> $ foo


> "$ foo"

> '$ foo'

> \ $ foo

> _EOF_ algún texto "algún texto" 'algún texto'

$ foo

> "$ foo"

> '$ foo'

> \ $ foo

> _EOF_ algún texto "algún texto" 'algún texto'

$ foo


Como podemos ver, el caparazón no presta atención a las comillas. Los trata como personajes ordinarios. Esto nos permite incrustar citas libremente dentro de un documento aquí. Esto podría resultar útil para nuestro programa de informes.

Aquí los documentos se pueden utilizar con cualquier comando que acepte entradas estándar. En este ejemplo, usamos un documento here para pasar una serie de comandos al ftp programa para recuperar un archivo de un servidor FTP remoto:



#! / Bin / bash

# Script para recuperar un archivo vía FTP FTP_SERVER = ftp.nl.debian.org

FTP_PATH = / debian / dists / lenny / main / installer-i386 / current / images / cdrom REMOTE_FILE = debian-cd_info.tar.gz


ftp -n << _EOF_ abrir $ FTP_SERVER

usuario anónimo yo @ linuxbox cd $ FTP_PATH

hachís

obtener $ REMOTE_FILE adiós

_EOF_

ls -l $ REMOTE_FILE

#! / Bin / bash

# Script para recuperar un archivo vía FTP FTP_SERVER = ftp.nl.debian.org

FTP_PATH = / debian / dists / lenny / main / installer-i386 / current / images / cdrom REMOTE_FILE = debian-cd_info.tar.gz


ftp -n << _EOF_ abrir $ FTP_SERVER

usuario anónimo yo @ linuxbox cd $ FTP_PATH

hachís

obtener $ REMOTE_FILE adiós

_EOF_

ls -l $ REMOTE_FILE


Si cambiamos el operador de redirección de “<<” a “<< -”, el shell ignorará los caracteres de tabulación iniciales en el documento here. Esto permite sangrar un documento aquí, lo que puede mejorar la legibilidad:



#! / Bin / bash

# Script para recuperar un archivo vía FTP FTP_SERVER = ftp.nl.debian.org

#! / Bin / bash

# Script para recuperar un archivo vía FTP FTP_SERVER = ftp.nl.debian.org


FTP_PATH = / debian / dists / lenny / main / installer-i386 / current / images / cdrom REMOTE_FILE = debian-cd_info.tar.gz


ftp -n << - _EOF_ abrir $ FTP_SERVER

usuario anónimo yo @ linuxbox cd $ FTP_PATH

hachís

obtener $ REMOTE_FILE adiós

_EOF_


ls -l $ REMOTE_FILE

FTP_PATH = / debian / dists / lenny / main / installer-i386 / current / images / cdrom REMOTE_FILE = debian-cd_info.tar.gz


ftp -n << - _EOF_ abrir $ FTP_SERVER

usuario anónimo yo @ linuxbox cd $ FTP_PATH

hachís

obtener $ REMOTE_FILE adiós

_EOF_


ls -l $ REMOTE_FILE


Top OS Cloud Computing en OnWorks: