O documento aqui recuado causa um erro de sintaxe

3

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 ...
    
por BriteSponge 20.03.2015 / 16:39

1 resposta

5

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

    
por 20.03.2015 / 16:41