Observe que o formulário <<- word
here-doc exige que apenas os caracteres da guia possam aparecer antes de word
. Você não pode usar espaços, deve ser abas.
ref: link
Eu tenho o seguinte fragmento de código no meu shell script e tenho um bug que não consigo definir uma razão para isso, apesar de algumas pesquisas. Quando eu executo o código como abaixo, o script sai com uma mensagem dizendo
./my_script.sh: line 53: syntax error at line 61: '<<' unmatched
Eu usei set -x
e posso ver que tudo está bem até o erro (eu só configuro as variáveis de qualquer maneira).
Por algum motivo, basta remover os espaços (e eles são espaços e não caracteres não exibidos) antes que o eot
permita que ele funcione.
Deixa meu xml parecendo um pouco desalinhado, mas funcional.
Alguém sabe por que isso acontece porque eu não gosto de coisas desse tipo que não posso explicar e gostaria que meu xml ficasse bonito também?
Veja a parte relevante do script:
# ... various environment variables set here ...
clean_files() # line 53
{
# Clear up the intermediate files
mv $datafile $ARCHIVE_DIR/$(basename $datafile).$$
}
xmlfile_header()
{ # line 60
cat <<- eot
<?xml version="1.0" encoding="UTF-8" ?>
<ppllist>
eot
}
# ... more stuff ...
Observe que o formulário <<- word
here-doc exige que apenas os caracteres da guia possam aparecer antes de word
. Você não pode usar espaços, deve ser abas.
ref: link