What is a heredoc? Here Documents Explained | Linux Terminal 201 - HakTip 179
Índice:
Ao escrever scripts de shell, você pode estar em uma situação em que precisa passar um bloco de texto ou código com
sftp
para um comando interativo, como
tee
,
cat
ou
sftp
.
No Bash e em outros shells como Zsh, um documento Here (Heredoc) é um tipo de redirecionamento que permite passar várias linhas de entrada para um comando.
A sintaxe da escrita do HereDoc tem o seguinte formato:
<< 'DELIMITER' HERE-DOCUMENT DELIMITER
- A primeira linha começa com um comando opcional seguido pelo operador de redirecionamento especial
<<e o identificador de delimitação.- Você pode usar qualquer string como um identificador delimitante, os mais usados são EOF ou END. Se o identificador delimitante não estiver entre aspas, o shell substituirá todas as variáveis, comandos e caracteres especiais antes de passar as linhas do documento aqui para o comando. sinal de menos para o operador de redirecionamento
<<-, fará com que todos os caracteres de tabulação iniciais sejam ignorados. Isso permite que você use o recuo ao escrever aqui documentos em scripts de shell. Caracteres em branco à esquerda não são permitidos, apenas a guia.
O bloco aqui-documento pode conter cadeias, variáveis, comandos e qualquer outro tipo de entrada. A última linha termina com o identificador delimitante. Não é permitido espaço em branco na frente do delimitador. - Você pode usar qualquer string como um identificador delimitante, os mais usados são EOF ou END. Se o identificador delimitante não estiver entre aspas, o shell substituirá todas as variáveis, comandos e caracteres especiais antes de passar as linhas do documento aqui para o comando. sinal de menos para o operador de redirecionamento
Exemplos básicos de Heredoc
Nesta seção, veremos alguns exemplos básicos de como usar o heredoc.
Heredoc é mais frequentemente usado em combinação com o comando cat.
No exemplo a seguir, estamos passando duas linhas de texto contendo uma variável de ambiente e um comando para
cat
usando um documento aqui.
cat << EOF The current working directory is: $PWD You are logged in as: $(whoami) EOF
Como você pode ver na saída abaixo, a variável e a saída do comando são substituídas:
The current working directory is: /home/linuxize You are logged in as: linuxize
Vamos ver o que acontecerá se colocarmos o delimitador entre aspas simples ou duplas.
cat <<- "EOF" The current working directory is: $PWD You are logged in as: $(whoami) EOF
Você pode notar que, quando o delimitador é citado, nenhuma expansão de parâmetro e substituição de comando são feitas pelo shell.
The current working directory is: $PWD You are logged in as: $(whoami)
if true; then cat <<- EOF Line with a leading tab. EOF fi
Line with a leading tab.
Em vez de exibir a saída na tela, você pode redirecioná-la para um arquivo usando os operadores
>
,
>>
.
cat << EOF > file.txt The current working directory is: $PWD You are logged in as: $(whoami) EOF
Se o arquivo.txt não existir, ele será criado. Ao usar
>
o arquivo será substituído, enquanto o
>>
acrescentará a saída ao arquivo.
A entrada do heredoc também pode ser canalizada. No exemplo a seguir, o comando
sed
substituirá todas as instâncias do caractere
l
por
e
:
cat <<'EOF' | sed 's/l/e/g' Hello World EOF
Heeeo Wored
Para gravar os dados canalizados em um arquivo:
cat <<'EOF' | sed 's/l/e/g' > file.txt Hello World EOF
Usando Heredoc com SSH
O uso do Heredoc é uma das maneiras mais convenientes e fáceis de executar vários comandos em um sistema remoto por SSH.
Ao usar o delimitador não citado, escape de todas as variáveis, comandos e caracteres especiais, caso contrário eles serão interpolados localmente:
ssh -T [email protected] << EOF echo "The current local working directory is: $PWD" echo "The current remote working directory is: \$PWD" EOF
The current local working directory is: /home/linuxize The current remote working directory is: /home/user
Você também pode configurar uma autenticação baseada em chave SSH e conectar-se aos servidores Linux sem inserir uma senha.
Conclusão
Neste guia, você aprendeu o que é
heredoc
e como usá-lo em seus scripts de shell.
Como executar o Bash no Ubuntu no Windows 10
Ativar o Windows Subsystem para Linux permitirá executar o Bash no Ubuntu no Windows 10, scripts Bash , Ferramentas de linha de comando do Linux, primeiras ferramentas do Linux.
Matrizes Bash
Matrizes são uma das estruturas de dados mais usadas e fundamentais. Neste artigo, abordaremos as matrizes Bash e explicaremos como usá-las nos seus scripts Bash.
Bash para loop
Existem três construções básicas de loop no script Bash, para loop, enquanto loop e até. Neste tutorial, abordaremos o básico dos loops for no Bash, bem como as instruções break e continue para alterar o fluxo de um loop.







