Bash-Fehler: „

Bash-Fehler: „

Ich versuche, dieses Skript zum ordnungsgemäßen Funktionieren zu bringen, aber ich bekomme ./passmark.sh line 7: [y command not found

Hier ist mein Skript

#!/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 

Antwort1

Sie benötigen Leerzeichen um das [und ], zB

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

So wie Sie es geschrieben haben, versucht es, wenn $MARKist 7, den Befehl auszuführen, [7anstatt ihn 7als Argument an den [Befehl zu übergeben ( [ist nur eine Kurzbezeichnung für test).

Sie sollten die Variable auch in Anführungszeichen setzen. Andernfalls wird der Testausdruck nicht richtig analysiert, wenn der Benutzer eine leere Zeile oder mehrere Wörter eingibt.

verwandte Informationen