Como posso criar um arquivo usando o cat
comando com um here-document dentro do script de shell"
#!/bin/bash
create_file () {
cat > a.txt << EOF
0 abc def
ghi jkl mno
pqrs tuv wxyz
EOF
}
create_file
Erro
Syntax error: end of file unexpected (expecting "}")
remover recuo após abrir EOF:
O Bash procura o mesmo "delimitador" com o qual você começou. Você começou com "EOF", mas estava terminando com "____EOF" ao usar recuo, então ele não conseguiu corresponder ao delimitador de fechamento
se você quiser adicionar espaçamento ao texto resultante, adicione recuo ao texto, mas mantenha EOF no início da linha:
A linha que termina o here doc deve corresponder exatamente à string que você especificar no início do here doc. Para que você possa recuar seu código de forma legível, faça o seguinte:
-
after<<
para dizer ao bash para ignorar as tabulações iniciais (e somente as tabulações, não todos os espaços em branco) no here-doc:Então o documento acima com os espaços em branco importantes explicados é:
e criará este arquivo sem espaços em branco à esquerda:
Se você quiser espaços em branco no arquivo de saída, coloque-os depois de qualquer tabulação aqui-doc:
Se você quiser tabulações iniciais no arquivo de saída, não adicione nada
-
à construção start do here-doc<<
e recue o conteúdo do here-doc com tabulações e/ou outros espaços em branco exatamente como você quer que ele apareça na saída:Se você copiar/colar o texto acima e ele gerar um arquivo com espaços em branco à esquerda, é porque você esqueceu de converter os espaços que este site mostra dentro do here-doc em tabulações para seu código real.