Erro de bash: “[y comando not found” [duplicado]

1

Estou tentando fazer esse script funcionar corretamente, mas recebo ./passmark.sh line 7: [y command not found .

Aqui está o meu script

#!/bin/bash
# A simple script to ask a user for a pass mark and then display a grade
# the grade will be either an A, B, C, D or F
#
CONT=y
echo
while [$CONT = "y" ]
do
        echo -e "\"Please enter a pass mark: \c \""
        read MARK
        if [$MARK -ge "0" -a $MARK -lt "50"] ; then
                echo -e "\n \"F\" \n"
        elif [$MARK -ge "50" -a $MARK -lt "60"] ; then
                echo -e "\n \"D\" \n"
        elif [$MARK -ge "60" -a $MARK -lt "70"] ; then
                echo -e "\n \"C\" \n"
        elif [$MARK -ge "70" -a $MARK -lt "80"] ; then
                echo -e "\n \"B\" \n"
        elif [$MARK -ge "80" -a $MARK -lt "100"] ; then
                echo -e "\n \"A\" \n"
        else
                echo -e "\"Invalid input!!\n \""
        fi
        echo -e "\"Would you like to enter another pass mark? (y/n) \c \""
        read REPLY
        case "$REPLY" in
                n | N | no | No | NO ) CONT=n ;;
                *) ;;
        esac
echo
done 
    
por Lyall Johnson 17.10.2014 / 00:04

1 resposta

5

Você precisa de espaços em torno de [ e ] , por exemplo,

if [ "$MARK" -ge 0 -a "$MARK" -lt 50 ]; then

A maneira como você o escreveu, quando $MARK é 7 , ele tenta executar o comando [7 em vez de passar 7 como um argumento para o comando [ ( [ é apenas um curto nome para test ).

Você também deve citar a variável. Caso contrário, se o usuário inserir uma linha em branco ou várias palavras, a expressão de teste não será analisada corretamente.

    
por 17.10.2014 / 00:07