Por que este script simples está lançando um erro em if / then / else? [fechadas]

1

Se eu tentar executar este script:

clear
echo -n "please enter a value"

read num 

if [ "$num" -eq 8 ] then
        echo "you entered 8"
else
        echo "the number you entered was not 8"

Eu recebo a seguinte saída / erro:

please enter a value5
./script.sh: line 9: syntax error near unexpected token 'else'
./script.sh: line 9: else'

Por que esse script não é executado?

    
por the_velour_fog 02.04.2015 / 00:49

1 resposta

6

Você perdeu um ponto-e-vírgula ou uma nova linha após a cláusula if e não há fi no final do bloco if .

#!/bin/bash
clear
echo -n "please enter a value"

read num 

if [ "$num" -eq 8 ]
then
        echo "you entered 8"
else
        echo "the number you entered was not 8"
fi

Algumas outras sugestões:

  • Os scripts sempre devem começar com uma linha #! para informar ao sistema quais intérprete para usar
  • Sua comparação [ "$num" -eq 8 ] é uma comparação numérica. Se você não tiver certeza de que o usuário digitará um número, considere usar uma comparação de string, [ 8 = "$num" ]
  • Você pode agrupar o prompt na instrução read , read -p "Please enter a value: " num
por 02.04.2015 / 00:50

Tags