Erro de sintaxe: fim de arquivo inesperado – script Bash [fechado]

Fechado . Esta pergunta precisa de detalhes ou clareza . Atualmente não está aceitando respostas.

Comentários

  • (0) Pode ter sido mais útil nos mostrar uma diferença da última versão que funcionou. …………………… Algumas observações (que provavelmente não se relacionam com o seu problema específico atual): (1) Não conheço nenhuma circunstância em que precise de um ; (ponto e vírgula) no final de uma linha. Você pode excluir os pontos-e-vírgulas no final das linhas 157, 161, 165, 168 e 169. (Ou você pode deixá-los; acho que é uma questão de estilo.)… (Cont.)
  • (Cont.)… (2) Você sempre deve citar variáveis shell, a menos que tenha um bom motivo para não fazê-lo e tenha certeza de que sabe o que está fazendo; por exemplo, "$1", "$2", "$SECONDS" e "$starttime". (3) É mais fácil ler e depurar o código que está indentado corretamente. (4) Por que você está definindo FS e não está usando? (5) `…` pode ser escrito $(…). (6) $(($SECONDS - $starttime)) pode ser escrito de forma equivalente $((SECONDS - starttime)). Novamente, isso é basicamente uma questão de estilo. (7) Por que você está imprimindo "$words_read" no loop quando não está modificando no loop?
  • Aqui está uma abordagem de depuração: tente excluir as linhas 157- 174 e executando o script novamente. Se você ainda receber o erro (provavelmente relatado como estando na linha 157 ou 158), então você sabe que o problema não é nas linhas 157-174, e você tem que olhar mais para trás (então, repita o processo até que o erro desapareça). … (Continuação)
  • (Continuação)… Assim que o erro desaparecer, coloque as últimas linhas que você excluiu de volta e comece a diminuí-las. Por exemplo, se a exclusão das linhas 157-174 fizer com que o erro desapareça, coloque-as de volta, mas exclua as linhas 159-160, 163-168 e 171-172. Tente substituir `grep …` por uma lista de valores. Em outras palavras, use o processo de eliminação.
  • Observações sobre alguns comentários de Scott ' s: (ad 2) se você tiver certeza do que está fazendo então (no código postado) apenas "$1" precisa de citação, (anúncio 4) provavelmente ele quis dizer IFS (e não FS)?

Resposta

O diagnóstico ” final de arquivo inesperado “ é uma dica de que você tem alguma construção sintática de abertura sem correspondência ou não terminada (if w / o fi, do w / o done, colchetes de abertura sem o de fechamento associado, citações de abertura, mas não terminadas, etc.). O número da linha apontando para o final do script não é útil neste caso, além de dizer para inspecionar suas construções sintáticas; o erro pode estar em qualquer parte do seu código. Você tem que verificar isso.

Comentários

  • Obrigado pela resposta. Eu encontrei o erro e o corrigi!
  • – o erro pode estar em qualquer parte do seu código. Conta criada apenas para votar positivamente por este conselho.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *