Skip to content
Latchkey

O Que É um Here-Document? Entrada Multilinha Inline

Um here-document é um recurso do shell que alimenta um bloco de texto inline e multilinha a um comando como sua entrada padrão, usando o delimitador <<.

Quando você precisa passar várias linhas de texto a um comando, digitá-las um echo de cada vez é desajeitado. Um here-document permite embutir um bloco inteiro de texto diretamente no script e canalizá-lo para um comando como stdin. Scripts de CI usam here-docs para escrever arquivos de config, alimentar SQL a um banco de dados ou construir mensagens multilinha.

O que é um here-document

Um here-doc começa com << seguido de uma palavra delimitadora, depois linhas de texto, e termina quando esse delimitador aparece sozinho em uma linha. Todas as linhas no meio são enviadas como stdin ao comando.

Um exemplo básico

Escrever cat <<EOF > config.txt depois várias linhas depois EOF cria um arquivo com exatamente aquelas linhas. O texto entre os marcadores se torna a entrada para cat, que o escreve.

Expansão e aspas

  • Por padrão, variáveis e command substitutions dentro de um here-doc são expandidas.
  • Colocar o delimitador entre aspas, como <<'EOF', desativa a expansão para que o texto fique literal.
  • Use <<-EOF para remover tabs à esquerda para uma indentação mais limpa.

Here-doc versus here-string

Um here-document fornece múltiplas linhas; uma here-string, escrita <<<, fornece uma única string. Ambos alimentam stdin sem um arquivo separado, mas here-docs são para blocos de texto.

Here-documents no CI

Scripts de CI usam here-docs para gerar arquivos de config inline ou rodar SQL de múltiplas instruções contra um serviço. Cuidado com as aspas: um delimitador sem aspas expandirá referências $, o que pode quebrar templates ou vazar secrets para um arquivo.

Gerando arquivos em runners gerenciados

Nos runners da Latchkey, um here-doc é uma forma organizada de escrever uma config ou script durante um passo sem versioná-lo no repo. Coloque o delimitador entre aspas quando o conteúdo deve permanecer literal, especialmente se contiver placeholders de secret.

Principais conclusões

  • Um here-document alimenta um bloco de texto inline a um comando como stdin.
  • Ele começa com <<DELIM e termina quando DELIM aparece sozinho em uma linha.
  • Colocar o delimitador entre aspas desativa a expansão de variáveis para conteúdo literal.

Guias relacionados