Eu tenho um script contendo uma função e uma chamada de função. Dentro da função existe um heredocument:
#!/bin/bash
DWA() {
......
mysql -u root -p <<-MYSQL
......
MYSQL
}
DWA
O problema
A execução é interrompida com um erro em relação ao delimitador heredocument (provavelmente devido ao delimitador MYSQL
estar recuado).
O problema não aconteceu quando removi todos os leads (espaços em branco/tabulações).
Minha pergunta
As funções dadas removem todas as guias principais (não sei sobre outros tipos de leads, como espaços em branco), por que encontro esse problema e o que, se houver, pode ser feito contra isso?
Você provavelmente não está indentando seu heredoc com tabulações. Cada linha do heredoc deve ser recuada com uma tabulação, incluindo a primeira linha (onde o delimitador é introduzido). Aqui está um caso de teste para você:
Tente executar esse comando e depois executar
heredoc.sh
. Você deve obter a seguinte saída:Como alternativa, aqui está o mesmo script, mas com a primeira linha recuada com espaços em vez de uma tabulação:
Se executarmos
heredoc2.sh
, obteremos a seguinte saída de erro: