Estações de trabalho on-line OnWorks Linux e Windows

Logotipo

Hospedagem online grátis para estações de trabalho

<Anterior | Conteúdo | Próxima>

Tokens ausentes ou inesperados

Outro erro comum é esquecer de completar um comando composto, como if or enquanto. Vejamos o que acontece se removermos o ponto e vírgula após o teste no if comando:



#! / Bin / bash


# problema: script para demonstrar número de erros comuns = 1

se [$ number = 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 [$ number = 1] então

echo "O número é igual a 1." outro

echo "O número não é igual a 1."

fi


O resultado é este:



[me @ linuxbox ~] $ problema

/ home / me / bin / trouble: linha 9: erro de sintaxe próximo a token inesperado

`else '

/ home / me / bin / trouble: linha 9: `else '

[me @ linuxbox ~] $ problema

/ home / me / bin / trouble: linha 9: erro de sintaxe próximo a token inesperado

`else '

/ home / me / bin / trouble: linha 9: `else '


Novamente, a mensagem de erro aponta para um erro que ocorre depois do problema real. O que acontece é realmente muito interessante. Como lembramos, if aceita uma lista de comandos e avalia o código de saída do último comando da lista. Em nosso programa, pretendemos que esta lista consista em um único comando, [, um sinônimo para teste. O [ comando considera o que se segue como uma lista de argumentos; no nosso caso, quatro argumentos: $ number, 1, = e ]. Com o ponto-e-vírgula removido, a palavra então é adicionado à lista de argumentos, o que é sintaticamente válido. A seguir eco o comando também é legal. É interpretado como outro comando na lista de comandos que if avaliará para um código de saída. O outro é encontrado em seguida, mas está fora do lugar, uma vez que o shell o reconhece como um palavra reservada (uma palavra que tem um significado especial para o shell) e não o nome de um comando, daí a mensagem de erro.


Top OS Cloud Computing na OnWorks: