Here Documento en Bash

Fumbani Banda 30 enero 2023
  1. Qué es el documento Here en Bash
  2. Use Here Document para poner una cadena de varias líneas en un archivo en Bash
  3. Use Here Document para escribir scripts de forma interactiva en Bash
  4. Use Here Document para pasar datos a una función en Bash
  5. Desactivar la sustitución de parámetros en el documento Here en Bash
Here Documento en Bash

Este tutorial explica qué es el documento Here y su uso para escribir una cadena de varias líneas en un archivo, escribir secuencias de comandos Bash de forma interactiva, usarlo con funciones y desactivar la sustitución de parámetros.

Qué es el documento Here en Bash

Heredoc es la abreviatura de Here documento. Heredoc utiliza un programa interactivo para proporcionar entrada a un comando. El heredoc usa Here Tag para indicar el final de la entrada a un comando.

La primera Here Tag define la Here Tag que indicará el final de la entrada. La notación utilizada para este documento se muestra a continuación.

command <<Here Tag
>command1
>command2
>command3
>Here Tag

La primera Here Tag está precedida por el símbolo <<. Este símbolo dirige la entrada interactiva para el documento here a command como entrada estándar para su posterior procesamiento.

Al definir una Here Tag, asegúrese de que no debe aparecer en la lista de comandos para evitar confusiones.

Use Here Document para poner una cadena de varias líneas en un archivo en Bash

Usamos el documento here y el comando cat para ingresar una cadena de varias líneas en un archivo de texto de forma interactiva. El EOF que viene después del símbolo << define la Here Tag para el documento aquí.

Significa que ingresaremos una cadena de varias líneas en el shell interactivo hasta que el shell vea la Here Tag, EOF, en nuestro caso. El operador de redirección de salida, >, se utiliza para dirigir la salida estándar del comando cat al archivo especificado, output.txt, en este caso.

cat <<EOF > output.txt
> Hello user.
> Welcome to DelftStack.
> Hope you enjoy your stay.
> EOF

Usando el símbolo, >>, como el operador de redirección agrega la salida del comando cat al archivo especificado mientras que el símbolo > crea un nuevo archivo, y si el archivo ya existía, reescribe el contenido del archivo

Use Here Document para escribir scripts de forma interactiva en Bash

Usamos el documento here y el comando cat para escribir un script Bash de forma interactiva y redirigir la salida a un script Bash. Definimos la Here Tag después del símbolo << y delimitamos el final de la entrada interactiva con la Here Tag.

La Here Tag en el siguiente guión es EOF. Usamos el operador de redirección de salida, >, para redirigir la salida al script Bash, echo.sh.

cat <<EOF > echo.sh
> #!/bin/bash
>
> echo "Hello World!"
> echo "Welcome to DelftStack."
> EOF

Usando el comando cat, verificamos el contenido del script echo.sh.

cat echo.sh

Escribimos con éxito el script Bash utilizando el documento here de la salida que se muestra a continuación.

#!/bin/bash

echo "Hello World!"
echo "Welcome to DelftStack."

Use Here Document para pasar datos a una función en Bash

La siguiente secuencia de comandos lee la entrada del documento here. Hemos definido una función en el script llamada GetPersonalInfo. La función tiene comandos que leen datos de entrada.

Usamos el documento here para pasar los datos de entrada a la función y usamos los comandos echo para mostrar los datos en la salida estándar. Se accede a las variables definidas dentro de la función fuera de la función porque las variables en Bash son globales por defecto a menos que la palabra clave local las haya definido.

#!/bin/bash
GetPersonalInfo(){
    read fname
    read lname
    read country
}

GetPersonalInfo <<EOF
John
Doe
USA
EOF

echo "Personal Information"
echo
echo "First Name: $fname"
echo "Last name: $lname"
echo "Country of Residence: $country"

La ejecución del script Bash produce el siguiente resultado.

Personal Information

First Name: John
Last name: Doe
Country of Residence: USA

Desactivar la sustitución de parámetros en el documento Here en Bash

Generamos una nueva secuencia de comandos a partir de la secuencia de comandos existente utilizando el documento aquí en la secuencia de comandos a continuación. La Here Tag, EOF, se ha citado usando comillas simples para evitar la sustitución de parámetros dentro del documento here.

Citar la primera Here Tag le dice al documento aquí que conserve el significado literal de los caracteres especiales dentro del documento aquí.

#!/bin/bash
echo "This script generates another script."

cat <<'EOF' > add.sh
#!/bin/bash

x=10
y=11

let "sum = $x + $y"
echo "Total of $x and $y is $sum"
EOF

Hemos utilizado el comando cat para comprobar el contenido del script recién generado, add.sh.

#!/bin/bash
x=10
y=11

let "sum = $x + $y"
echo "Total of $x and $y is $sum"

La ejecución del script recién generado genera el siguiente resultado en el terminal.

Total of 10 and 11 is 21
Fumbani Banda avatar Fumbani Banda avatar

Fumbani is a tech enthusiast. He enjoys writing on Linux and Python as well as contributing to open-source projects.

LinkedIn GitHub