shell script dando erro

0

Eu tenho um pequeno script de shell que está causando erro:

unexpected end of file

O script segue:

#!
if [  t -eq  1  ]
then
 echo " TEST1 "
else
echo " TEST LAST LOOP "
fi
    
por Priya 23.03.2018 / 08:26

3 respostas

5

Não há nada no script que deva dar esse erro. Se você executar o script com sh ./script.sh , ele produzirá

 TEST LAST LOOP 

como saída. Se executá-lo com bash ./script.sh , você obterá a mesma saída, mas com um erro adicional de "expressão de inteiração esperada", pois t não é um inteiro (isso também pode acontecer se você executar com sh se seu sh for implementado por bash ). Se você executar com ./script.sh , o shell provavelmente irá reclamar com "Nenhum arquivo ou diretório", uma vez que você não adicionou uma #! -line adequada.

Neste script, você pode usar #!/bin/sh como a #! -line, pois você só usa os recursos POSIX padrão.

O teste [ t -eq 1 ] nunca será verdadeiro, pois t (o caractere) não é um inteiro. Se você está configurando a variável t para um número inteiro em algum lugar, use [ "$t" -eq 1 ] no teste.

A única maneira de conseguir que um shell diga "fim de arquivo inesperado" é convertendo o script em um arquivo de texto do DOS e executando-o com bash .

Se você receber este erro, o arquivo de script provavelmente é um arquivo de texto do DOS (possivelmente devido à criação em uma máquina Windows). Você deve executar dos2unix no script.

Veja as perguntas relacionadas a dos2unix .

    
por 23.03.2018 / 08:41
0
  • substitua #! por #!/bin/sh ou execute sh ./script.sh e você deve definir t como inteiro $t not t .
por 23.03.2018 / 17:36
0

Falta a linha shebang #!/bin/sh e t não está definida

    
por 23.03.2018 / 08:37