<Anterior | Conteúdo | Próxima>
Citações ausentes
Se editarmos nosso script e removermos a citação final do argumento após o primeiro
comando echo:
#! / Bin / bash
# problema: script para demonstrar número de erros comuns = 1
se [$ número = 1]; então
echo "O número é igual a 1.
outro
echo "O número não é igual a 1."
fi
#! / Bin / bash
# problema: script para demonstrar número de erros comuns = 1
se [$ número = 1]; então
echo "O número é igual a 1.
outro
echo "O número não é igual a 1."
fi
Veja o que acontece:
[me @ linuxbox ~] $ problema
/ home / me / bin / trouble: linha 10: EOF inesperado ao procurar `" '
/ home / me / bin / trouble: linha 13: erro de sintaxe: fim de arquivo inesperado
[me @ linuxbox ~] $ problema
/ home / me / bin / trouble: linha 10: EOF inesperado ao procurar `" '
/ home / me / bin / trouble: linha 13: erro de sintaxe: fim de arquivo inesperado
Isso gera dois erros. Curiosamente, os números de linha relatados pelas mensagens de erro não são onde a citação ausente foi removida, mas sim muito mais tarde no programa. Se seguirmos o programa após a cotação ausente, podemos ver o porquê. bater continuará procurando a cotação de fechamento até encontrar uma, o que faz, imediatamente após a segunda eco comando. Depois disso, bater fica muito confuso. A sintaxe do subsequente if comando é quebrado porque o fi declaração agora está dentro de uma string entre aspas (mas aberta).
Em scripts longos, esse tipo de erro pode ser muito difícil de encontrar. Usar um editor com destaque de sintaxe ajudará, pois, na maioria dos casos, ele exibirá strings entre aspas de uma maneira distinta de outros tipos de sintaxe de shell. Se uma versão completa de vitalidade estiver instalado, o realce de sintaxe pode ser ativado digitando o comando:
: sintaxe ativada
: sintaxe ativada