Bash Definir variável de corda multilina

Bash Definir variável de corda multilina
Vamos supor que você tenha encontrado um cenário em que você precisa definir um bloco multilina de string em suas operações de script de bash. Se você tentar a maneira padrão de definir uma variável no bash, você deve encontrar um erro ou uma parte incompleta da variável.

Este guia rápido mostrará métodos de definição de variáveis ​​de cordas multilinas usando personagens de escape e heredoc.

Personagens Bash Escape

Bash, como a maioria das linguagens de programação, fornece a capacidade de usar caracteres de fuga. Os personagens de fuga nos permitem invocar uma nova interpretação das seqüências de personagens. Embora Bash tenha vários personagens de fuga, precisamos apenas nos preocupar com \ n (personagem de nova linha).

Por exemplo, se tivermos uma corda multilina em um script, podemos usar o caractere \ n para criar uma nova linha sempre que necessário.

Um exemplo desse caso de uso é:

#!/BIN/BASH
str = “Esta é uma string \ n-e outra \ n-e outra \ n-e a última”
echo -e $ str

Executando o script acima imprime as cordas em uma nova linha onde o caractere \ n existe.

Heredoc

O método acima funciona bem para texto simples de linha. No entanto, se precisarmos imprimir um texto com outros caracteres especiais, reações e citações, ele se torna desnecessariamente complexo. Para resolver esse problema, podemos usar o heredoc.

O que é um heredoc?

Um heredoc é um bloco de código de uso especial que diz ao shell que leia a entrada da fonte atual até encontrar uma linha contendo um delimitador.

A sintaxe para Heredoc em Bash é:

COMANDO << DELIMITER
..
Bloco Heredoc
..
..
Delimitador

Delimitadores em um heredoc podem ser qualquer corda. No entanto, as cordas mais comuns são EOF, EOM ou fim.

Depois que o shell encontra o delimitador, ele substitui todas as variáveis, comandos e caracteres especiais e depois passa as informações dentro do bloco heredoc para o comando principal.

Você pode incluir caracteres especiais, cordas regulares, variáveis ​​e outros comandos de shell no bloco heredoc.

Certifique -se de encerrar o bloco Heredoc com o delimitador. Não adicione nenhum espaço em branco antes do delimitador.

Corda multilina usando heredoc

Suponha que você tenha a seguinte sequência:







Documento



Dentro de um script bash, podemos criar uma varível e passar a string acima para CAT, como mostrado abaixo:

#!/BIN/BASH
String = $ (CAT << EOF






Documento




Eof
)
eco $ string

Depois de executar o script acima, você verá uma saída A:

Como você pode ver, podemos imprimir toda a string, incluindo todos os personagens especiais.

Conclusão

Para este guia, discutimos como definir e usar uma corda multilina em um script Bash. No entanto, há mais no heredoc do que discutido aqui. Considere o seguinte recurso para saber mais.