Here Documento en Bash
- Qué es el documento Here en Bash
- Use Here Document para poner una cadena de varias líneas en un archivo en Bash
- Use Here Document para escribir scripts de forma interactiva en Bash
- Use Here Document para pasar datos a una función en Bash
- Desactivar la sustitución de parámetros en el documento Here 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