2016-05-06 4 views
1

Ich versuche Benutzereingaben von einem Benutzer zu erhalten und handle dann entweder mit mehr Benutzereingaben oder mit der Ausführung eines Skripts sofort, jedoch werde ich ausgeführt in ein kleines Problem. Hier ist der Code Ich habe bisher:Wie man Benutzereingaben einer Zeichenkette zuweist und mit einer anderen Zeichenkette vergleicht

#!/bin/bash 

while true 
do 
    read -p "Would you like to run the script with custom dates? (y/n) " answer 

    case $answer in 
    [yY]*) export ANSWER=Y 
      break;; 

    [nN]*) export ANSWER="N" 
      exit;; 

    *)  echo "Not a valid response, please answer with Y or N";; 
    esac 
done 

if [$ANSWER = Y] 
then 
    echo "Answered yes" 
else 
    echo "Answered no" 
fi 

Als ich Y für meine Antwort geben, ich erhalte eine Fehlermeldung: ./getRatings.sh: line 18: [Y: command not found

ich sehr neu bin heftig zu schlagen und bin sicher, ich bin etwas fehlt super einfach weiß jemand, wie man das macht?

Antwort

1

Der Fehler ./getRatings.sh: line 18: [Y: command not found bedeutet, dass im Skript ./getRatings.sh, auf der Linie 18, die Shell versuchen, den [Y Befehl auszuführen, aber es kann ihn nicht finden. Dies liegt daran, dass Sie Y als Antwort eingegeben haben, und dann [$ANSWER wurde als [Y interpretiert. Aber Sie möchten das [ builtin, verwenden und dafür müssen Sie ein Leerzeichen nach dem [ setzen. Und übrigens auch vor der ].

Kein Platz nach [ zu setzen ist so ähnlich, als würde nach einem Befehl kein Leerzeichen eingefügt. Zum Beispiel anstelle von ls some/path wenn Sie lssome/path schreiben, wird das offensichtlich nicht funktionieren. So ist

das Update so einfach wie:

if [ $ANSWER = Y ] 

Btw, da Sie verlassen, wenn die Antwort nicht ja, wird die echo "Answered no" nie erreicht werden.

Auch müssen Sie wahrscheinlich export die ANSWER Variable nicht benötigen.

Da Sie neu beim Shell-Scripting sind, empfehle ich http://www.shellcheck.net/. Sie können dort Bash-Skripte kopieren und einfügen und Bugs und schlechte Praktiken erkennen und erklären.

+0

Ich wusste, es war etwas einfaches ... Danke für die Hilfe, ich werde Ihre Antwort in 11 Minuten akzeptieren! –

+0

Ich sah nur Ihre Bearbeitung, danke für den Tipp mit dem Ausgang, griff ich diesen Cookie-Cutter-Code von einer anderen Website zu verwenden - ich arbeite selten mit Skriptsprachen, so dass ein großer Teil meines Codes aus anderen Quellen kopiert und dann aufgebaut wird. Danke auch für diesen Link! –

Verwandte Themen