Por que este script fornece um erro de sintaxe “Inesperado fim do arquivo”?

0

Por que esse script apresenta um erro de sintaxe "Fim de arquivo inesperado" na última linha?

{ [ $# -ne 2 ] && [ $# -ne 3 ] } && { echo "Uso: $0 [opciones] [nlineasresultado] [archivos a analizar]" && echo "NEED 2 OR 3 PARAMETERS" && exit 1 }
echo sucessfull
exit 0
    
por t90r 06.09.2016 / 21:55

2 respostas

3

Veja a página bash man, que mostra que a sintaxe ao usar chaves ( { , } ) é:

{ list; }

Isso significa que você está perdendo alguns pontos-e-vírgulas:

{ [ $# -ne 2 ] && [ $# -ne 3 ]; } && { echo "Uso: $0 [opciones] [nlineasresultado] [archivos a analizar]" && echo "NEED 2 OR 3 PARAMETERS" && exit 1; }

Note que você também pode usar novas linhas para obter a mesma coisa. Ou seja, isso é um erro:

{ echo hello }

Mas isso funciona:

{ echo hello; }

Como isso:

{
echo hello
}
    
por 06.09.2016 / 21:59
1
O agrupamento de comandos

bash , {} , precisa de um ; antes da chave de fechamento, } , como você não colocou o erro.

Faça:

{ [ $# -ne 2 ] && [ $# -ne 3 ] ;} && { echo "Uso: $0 [opciones] [nlineasresultado] \
          [archivos a analizar]" && echo "NEED 2 OR 3 PARAMETERS" && exit 1 ;}
    
por 06.09.2016 / 21:59