Tutorial de BASH Heredoc

Cómo usar Here Document en programación bash

Un bloque de código o texto que se puede redirigir al script de comando o programa interactivo se llama aquí documento o HereDoc. Los diferentes tipos de lenguaje de scripting como bash, sh, csh, ksh, etc. pueden tomar la entrada de texto directamente usando aquí el documento sin usar ningún archivo de texto. Entonces, cuando el codificador necesita menos cantidad de datos de texto, entonces usar código y datos en el mismo archivo es una mejor opción y se puede hacer fácilmente usando aquí documentos en un script. Sin lenguaje de scripting, aquí el documento también se puede usar en varios lenguajes de alto nivel como php, perl, etc. En este tutorial se muestra cómo puede usar aquí el documento en script bash.

Para usar here document en cualquier script bash, debe usar el símbolo &lt&lt seguido de cualquier identificador delimitador después de cualquier comando bash y cerrar HereDoc usando el mismo identificador delimitador al final del texto. La sintaxis para escribir HereDoc se muestra a continuación.

Command &lt&lt HeredocDelimiter
. . .
. . .
HeredocDelimiter

Uso de texto HereDoc simple

Supongamos que el comando es `cat` y el delimitador HereDoc es ADDTEXT . Abra el editor de texto y cree un archivo bash llamado hd-example1.sh con el siguiente código. Cuando usa HereDoc en cualquier script, es necesario mantener el mismo nombre para el delimitador inicial y final.

#!/bin/bash
cat &lt&ltADDTEXT
This text is
added by Here Document
ADDTEXT

Ahora, vaya a la carpeta del script y ejecute el siguiente comando para ejecutar el script. Aquí el script se almacena en la carpeta Documentos.

$ bash hd-example1.sh

Usando HereDoc con el símbolo ‘-‘

HereDoc usa el símbolo ‘-‘ para suprimir cualquier espacio de tabulación de cada línea del texto heredoc. En el siguiente ejemplo, el espacio de tabulación se agrega al comienzo de cada línea y el símbolo ‘-‘ se usa antes del delimitador inicial. Cuando se ejecuta el script, todos los espacios de tabulación se omiten desde el comienzo de cada línea, pero no crea ningún efecto en el espacio normal. Aquí, se crea un nuevo archivo llamado hd-example2.sh para probar la función de ‘-‘ .

#!/bin/bash
cat &lt&lt-ADDTEXT2
Line-1: Here Document is helpful to print short text
Line-2: Here Document can be used to format text
Line-3: Here Document can print variable within the text
Line-4: Here Document with ‘-‘ removes tab space from the line
ADDTEXT2

Ejecute el siguiente comando para ejecutar el script y mostrar el resultado.

$ bash hd-example2.sh

Usar variable dentro del texto HereDoc

Cree un nuevo script bash con el siguiente código. Aquí, se declaran dos variables denominadas inicio y final . Estas variables se utilizan dentro del texto hereDoc. Si usa comillas en el delimitador inicial de HereDoc, el valor de la variable no se imprimirá en la consola.

#!/bin/bash
start=“Hello everybody”
end=“Good Luck”

cat &lt&ltADDTEXT3
$start
Welcome to Linux Blog Site.
$end
ADDTEXT3

Cuando ejecute el archivo, se mostrará la siguiente salida.

Creando un nuevo archivo bash usando HerDoc

En los ejemplos anteriores, se muestra cómo puede usar HereDoc en cualquier script bash. También puede crear un nuevo archivo bash usando HereDoc, que se muestra en la siguiente parte de este tutorial. Cree un nuevo archivo bash llamado hd-example4.sh con el siguiente código. Aquí, se declara la variable NewFile para establecer el nombre de archivo del nuevo script bash que se creará después de la ejecución del archivo hd-example4.sh. Después de la ejecución, se creará un nuevo archivo bash llamado output.sh . Si lo desea, también puede ejecutar este archivo. La tarea del nuevo archivo es multiplicar dos números e imprimir el resultado.

#!/bin/bash
NewFile=output.sh
(
cat &lt&lt’ADDTEXT4′
#!/bin/bash

echo “This script creates a new file”

var1=10
var2=50

((result=$var1*$var2))
echo “The result= $result”
ADDTEXT4
) &gt $NewFile

Ejecute los siguientes comandos para probar el script anterior. El primer comando ejecutará el archivo de secuencia de comandos principal. El segundo comando mostrará el contenido del archivo recién creado. El tercer comando ejecutará el archivo bash recién creado.

$ bash hd-exampl4.sh
$ cat output.sh
$ bash output.sh

Función Uisng con HereDoc

Puede pasar valores de entrada a las variables de cualquier función del script bash desde el contenido de HereDoc. Cree otro archivo bash nuevo llamado hd-example5.sh para probar cómo se puede usar la función con HereDoc. Agregue el siguiente código en el archivo. Se declara una función llamada BookInfo en el script que tomará datos del texto HereDoc. Se declaran seis variables en la función denominada ISBN, bookName, authorName, edición, publicación y precio. Para establecer el valor de las variables correctamente, debe mantener el orden de los valores en la sección HereDoc de acuerdo con las variables declaradas en la función. Después de configurar los datos en las variables de función, el valor del precio se calcula con un descuento del 10% y se imprimen los valores de todas las variables en la consola.

#!/bin/bash
#Declare the function which will retrieve data from Here Document
BookInfo ()
{
read ISBN
read bookName
read authorName
read edition
read publication
read price
}
# Declare here document part to send data into the function
BookInfo &lt&ltADDTEXT5
ISBN-78633567809
Easy Laravel 5
Jason Gilmore
9th Edition
Learpub
100
ADDTEXT5

# Print the value of the function variables after calculating price value with 10% discount
((price=$price$price*10/100))
echo $bookName
echo $authorName
echo $edition, $publication
echo “$”$price

Ahora, ejecute el siguiente comando para ejecutar el script y verifique el resultado.

$ hd-example5.sh

Aquí, el valor de la variable de precio se establecerá en 100 del texto HereDoc. Después de establecer un descuento del 10% sobre el valor del precio, el valor se establecerá en 90. Por lo tanto, después de la ejecución, la siguiente salida se mostrará en la consola.

El comando `cat` se usa en la mayoría de los ejemplos anteriores. Pero también puede usar cualquier otro comando de bash con HereDoc. En el siguiente ejemplo, se usa otro comando bash wc para contar el total de líneas y palabras del texto HereDoc.

Hay tres líneas y nueve palabras en el texto HereDoc anterior. Ejecute los scripts para comprobar el resultado.

$ bash hd-example6.sh

Los ejemplos que se muestran en estos tutoriales le ayudarán a comprender el uso de HereDoc en el script bash. El uso de este documento en el script bash le ayuda a facilitar la tarea de desarrollo.

Leave a Comment

Your email address will not be published. Required fields are marked *

Hazlo Linux