2016-09-04 4 views
1

Arbeiten an diesem: Ein einfaches Spiel, um ein zufälliges Tastaturzeichen widerzuspiegeln; dann muss der Benutzer dieses Zeichen so schnell wie möglich abgleichen (dies ist (natürlich) noch nicht implementiert, aber das ist das Ziel) und die Gesamtzahl der "richtigen Übereinstimmungen" wird beibehalten.Durch eine zufällige Zeichenfolge Zeichen für Zeichen?

#!/bin/bash 
score=0 
while true; do 
clear 
echo "$score" 
character=$(</dev/urandom tr -dc '1234567890{}[]`~\/><[email protected]#$%^&*()_+=-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' | head -c1) 
echo "$character" 
read -rsn1 input 
if [ "$character" = "$input"]; then 
    echo "[+]" 
    score ++ 
    sleep 1 
else 
    echo "wrong!" 
    score=0 
    sleep 1 
fi 
done 

Direkt, meine Frage ist: Warum bin ich

[: missing `]' 

Fehler. Ich habe versucht, alle Varianten von

if [ "$character" = "$input" ]; then 

und zweite Frage: Wie würde ich meine nächste Frage richtig stellen, die ist: eine lange zufällige Zeichenfolge gegeben, wie würde man „explodieren“, dass String, so dass er eine hat Platz zwischen jedem Charakter? Ich habe nicht die Erfahrung/das Lexikon, um diese Operation zu beschreiben.

Sehr geschätzt!

+0

http://www.shellcheck.net/ ist dein Freund :-) – andlrc

Antwort

1

Es muss ein Raum sein, bevor der ] wie folgt aus:

if [ "$character" = "$input" ]; then 

Auch setzen bash in arithmetischen Modus, ersetzen Sie diese Zeile:

score ++ 

mit:

((score ++)) 
+1

Wenn das OP diesen Raum hinzugefügt hatte, dann dieser Teil o hätte der Code funktioniert? Die andere notwendige Korrektur ist 'score ++' -> '((score ++))'. – John1024

+0

@ john1024 du hast mich auf dem richtigen Weg .. leider immer noch nicht gehen. – archae0pteryx

+1

Mit diesen beiden Korrekturen funktioniert Ihr Code für mich. _ "leider immer noch nicht" _ Bei der Diagnose von Computerproblemen hilft Vagheit nicht: Was ist nicht "gegangen"? Gab es eine andere Fehlermeldung? Wenn ja, was war es genau? Oder ist es gelaufen und nicht, was du erwartest? Wenn ja, was hat es getan? Und wie unterscheidet sich das von dem, was Sie erwartet haben? – John1024

Verwandte Themen