Qual é o problema no meu script bash? [duplicado]

-4
#!/bin/bash
var=1
if [[ $var -eq 0 ]]
then
    echo "No students"
elif [[ $var -eq 1 ]]
then
    echo "1 student"
elif [[ $var -eq 2]]
then
    echo "2 students"
elif [[ $var -eq 3 ]]
then 
    echo "3 students"
elif [[ $var -eq 4 ]]
then
    echo "4 students"
else
    echo "A lot of students"
fi

Eu escrevi este script bash. Mas isso gera esse erro:

Failed test #1. Runtime error:
main.sh: line 11: syntax error in conditional expression
main.sh: line 12: syntax error near 'then'
main.sh: line 12: 'then'
    
por kirgiz_jigit 28.06.2017 / 15:54

2 respostas

9

O problema é elif [[ $var -eq 2]] , deve ser: elif [[ $var -eq 2 ]] .

O espaçamento é importante.

O problema é quando ele vê um [[ que procura fechar o ]] e ele não consegue encontrá-lo; em vez disso, ele vê 2]] , o que não tem nenhum significado.

    
por Ravexina 28.06.2017 / 16:02
5

case seria uma boa escolha para reduzir o código.

case $var in
  0) echo "No students" ;;
  1|2|3|4) echo "$var students" ;;
  *) echo "A lot of students" ;;
esac
    
por glenn jackman 28.06.2017 / 16:28