DevOps

Uso eficaz de Here Scripts

Cuando se trata de escribir scripts de shell (Shell Scripts), una técnica muy útil y poderosa es la utilización de «here scripts», también conocidos como «here documents» en inglés. Estos here scripts proporcionan una forma conveniente de pasar múltiples líneas de entrada a un comando o programa desde dentro de un script de shell, sin tener que crear archivos temporales.

La sintaxis básica de un here script en bash, que es uno de los shells más comúnmente utilizados en sistemas Unix y Linux, es la siguiente:

bash
comando <<DELIMITADOR línea 1 línea 2 ... línea N DELIMITADOR

En esta estructura, «comando» puede ser cualquier comando o programa al que desees pasar las líneas de entrada, y «DELIMITADOR» es una cadena arbitraria que elijas para marcar el comienzo y el final del here script. Las líneas de entrada entre el «DELIMITADOR» se pasan como entrada estándar al comando especificado.

Por ejemplo, supongamos que tienes un script de shell que ejecuta un programa interactivo que requiere varias entradas del usuario. En lugar de ingresar manualmente estas entradas cada vez que ejecutas el script, puedes utilizar un here script para proporcionar las entradas automáticamente. Aquí hay un ejemplo para ilustrar esto:

bash
#!/bin/bash # Ejecutar un programa interactivo que necesita varias entradas del usuario ./programa_interactivo <<FIN_DEL_INPUT entrada1 entrada2 entrada3 FIN_DEL_INPUT

En este caso, el script de shell ejecuta el programa interactivo programa_interactivo y proporciona las entradas «entrada1», «entrada2» y «entrada3» automáticamente a través del here script.

Los here scripts también son útiles cuando necesitas pasar bloques de texto formateado a comandos o programas. Por ejemplo, si deseas generar un archivo de configuración desde un script de shell, puedes utilizar un here script para pasar el contenido del archivo directamente al comando cat, como se muestra a continuación:

bash
#!/bin/bash # Generar un archivo de configuración cat <<CONFIGURACION > archivo_config.txt # Este es un archivo de configuración generado automáticamente opción1=valor1 opción2=valor2 opción3=valor3 CONFIGURACION

En este ejemplo, el contenido del archivo de configuración se especifica entre las líneas < y CONFIGURACION, y se redirige al archivo archivo_config.txt utilizando el comando cat.

Es importante destacar que el nombre del "DELIMITADOR" en un here script es arbitrario, siempre y cuando coincida tanto al comienzo como al final del script. Sin embargo, es recomendable elegir una cadena que no aparezca en el texto que estás pasando para evitar conflictos. Además, ten en cuenta que los here scripts respetan la expansión de variables y caracteres especiales, por lo que es importante considerar la interpolación de variables y la cita adecuada según sea necesario.

En resumen, los here scripts son una herramienta poderosa en el arsenal de cualquier scripter de shell, ya que proporcionan una forma conveniente de pasar múltiples líneas de entrada a comandos o programas desde dentro de un script de shell, sin necesidad de archivos temporales adicionales. Esta técnica puede mejorar la legibilidad, la concisión y la eficiencia de tus scripts de shell, lo que los hace especialmente útiles en situaciones donde la automatización y la manipulación de datos son fundamentales.

Más Informaciones

Por supuesto, profundicemos más en el uso y las aplicaciones de los here scripts en el contexto de la escritura de scripts de shell.

Los here scripts son especialmente útiles cuando se trabaja con comandos o programas que requieren una entrada de múltiples líneas de texto. En lugar de pasar estas líneas manualmente cada vez que se ejecuta el script, los here scripts permiten incluir estas líneas directamente en el script, lo que hace que el proceso sea más eficiente y automatizado.

Una característica importante de los here scripts es su capacidad para respetar la expansión de variables. Esto significa que puedes incluir variables dentro del here script y estas se expandirán como se esperaba. Por ejemplo:

bash
#!/bin/bash nombre="Juan" edad=30 cat <<FIN_DEL_MENSAJE Bienvenido, $nombre. Tu edad es $edad años. FIN_DEL_MENSAJE

En este ejemplo, las variables $nombre y $edad se expanden dentro del here script y se sustituyen por sus valores correspondientes al generar el mensaje.

Otro aspecto útil de los here scripts es su capacidad para mantener la sintaxis del texto pasado intacta, incluidos los espacios en blanco y los caracteres especiales. Esto significa que puedes incluir fácilmente bloques de texto formateado, fragmentos de código o archivos de configuración completos dentro de un here script sin preocuparte por la pérdida de formato o la interpretación incorrecta de los caracteres especiales.

Por ejemplo, si necesitas pasar un bloque de código Python a través de un here script, puedes hacerlo de la siguiente manera:

bash
#!/bin/bash python3 <<PYTHON_SCRIPT def saludar(nombre): print("Hola, " + nombre + "!") saludar("Marta") PYTHON_SCRIPT

En este caso, el bloque de código Python se incluye entre las líneas < y PYTHON_SCRIPT y se pasa al intérprete de Python para su ejecución.

Los here scripts también son útiles cuando se trabaja con comandos que requieren una entrada interactiva. Puedes utilizarlos para simular la entrada del usuario y automatizar tareas que normalmente requerirían intervención manual. Por ejemplo, supongamos que necesitas ejecutar un comando que solicita la confirmación del usuario. Puedes usar un here script para proporcionar automáticamente la entrada requerida:

bash
#!/bin/bash # Simular confirmación del usuario rm -i archivo_a_eliminar <<CONFIRMACION y CONFIRMACION

En este ejemplo, el comando rm -i eliminará el archivo archivo_a_eliminar, pero primero solicitará confirmación al usuario. El here script proporciona automáticamente la respuesta "y" para confirmar la eliminación del archivo.

En resumen, los here scripts son una herramienta versátil y poderosa en el desarrollo de scripts de shell. Su capacidad para pasar múltiples líneas de entrada de manera eficiente, mantener la sintaxis del texto intacta y simular la interacción del usuario los convierte en una opción valiosa para una variedad de escenarios de scripting. Al dominar el uso de los here scripts, puedes mejorar la automatización y la eficiencia de tus scripts de shell, lo que facilita la realización de tareas complejas y repetitivas en sistemas Unix y Linux.

Botón volver arriba

¡Este contenido está protegido contra copia! Para compartirlo, utilice los botones de compartir rápido o copie el enlace.