Table of Contents
Cómo utilizar Heredoc en secuencias de comandos de Shell
Aquí, el documento ( Heredoc. es un literal de flujo de entrada o archivo que se trata como un bloque especial de código. Este bloque de código se pasará a un comando para su procesamiento. Heredoc. se origina en shells UNIX. y se puede encontrar en shells populares de Linux como sh, tcsh, ksh, bash, zsh, csh. En particular, otros lenguajes de programación como Perl, Ruby, PHP también admiten heredoc.
Estructura de Herdoc
Heredoc. usa 2 corchetes angulares (<<) seguidos de un token delimitador. Se utilizará el mismo token delimitador para terminar el bloque de código. Todo lo que venga dentro del delimitador se considera un bloque de código.
Mira el ejemplo a continuación. Estoy redirigiendo el bloque de código al comando cat. Aquí el delimitador se establece en “ BLOQUE. y termina con el mismo “ BLOQUE. .
cat << BLOQUE. Hola mundo hoy la fecha es $ (fecha +% F) Mi directorio de inicio = $ INICIO BLOQUE.
NOTA. debe usar el mismo token delimitador para iniciar el bloqueo y terminar el bloque.
Crear comentarios multilínea
Si está codificando en algún momento en bash ahora, es posible que sepa que bash por defecto no admite comentarios multilínea como C. o Java. Puedes usar HereDoc. para superar esto.
freestar.config.enabled_slots.push
Esto no es un-en función de bash que admite comentarios de varias líneas, pero solo un truco. Si no redirige heredoc. a ningún comando, el intérprete simplemente leerá el bloque de código y no ejecutará nada.
<< COMENTARIO. Esta es la línea de comentario 1 Esta es la línea de comentarios 2 Esta es la línea de comentarios 3 COMENTARIO.
Comentarios de líneas múltiples
Manejo de espacios en blanco
De forma predeterminada, heredoc. no suprimirá ningún carácter de espacio en blanco (tabulaciones, espacios). Podemos anular este comportamiento agregando un guión (-) después de (<<) seguido de un delimitador. Esto suprimirá todos los espacios de tabulación, pero los espacios en blanco no se suprimirán.
cat <<-BLOCK Esta línea no tiene espacios en blanco. Esta línea tiene 2 espacios en blanco al principio. Esta línea tiene una sola pestaña. Esta línea tiene 2 pestañas. Esta línea tiene 3 pestañas. BLOQUE
Manejo de espacios
Sustitución de variables y comandos
Heredoc acepta la sustitución de variables. Las variables pueden ser variables definidas por el usuario o variables ambientales.
HOY = $ (fecha +% F) cat <
cat < Sustitución de variables y comandos
Caracteres especiales de escape
Hay varias formas de escapar de los caracteres especiales. Puedes hacerlo a nivel de personaje o de documento.
Para escapar de los caracteres especiales individuales, usa una barra invertida (\).
cat <
cat <<'BLOCK1' Estoy ejecutando como = $ USER BLOCK1 cat <<"BLOCK2" Estoy ejecutando como = $ USER BLOCK2 cat <<\ BLOCK3 Estoy ejecutando como = $ USER BLOCK3
Caracteres especiales de escape
Ahora que conocemos la estructura de heredoc. y cómo funciona, veamos algunos ejemplos. Dos áreas comunes donde uso heredoc. son ejecutar un bloque de comandos a través de SSH y pasar consultas SQL a través de heredoc.
En el siguiente ejemplo, estamos intentando ejecutar un bloque de código en un servidor remoto a través de SSH.
Ejecutar comandos sobre SSH
En el siguiente ejemplo, paso una instrucción select. a psql. para conectarme a una base de datos y ejecutar la consulta. Esta es una forma alternativa de ejecutar una consulta en psql. dentro del script bash en lugar de usar la marca-f para ejecutar el archivo .sql.
#!/Usr/bin/env bash UNAME = postgres DBNAME = testing psql–username = $ UNAME–password–dbname = $ DBNAME < Ejecutando SQL QUERY
Eso es todo por este artículo. Puede hacer mucho más con heredoc. en comparación con lo que mostramos en los ejemplos. Si tiene algún truco útil con heredoc. publíquelo en la sección de comentarios para que nuestros lectores puedan beneficiarse de ello.