Hallo, ich hab da (offensichtlich) mal eine Frage. Ich habe folgendes Programm geschrieben:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #!/bin/bash read -p "Setze Länge: " r read -p "Setze Breite: " a declare -a p=() declare -a q=() declare longitude=$((a/2)) for (( y=0 ; y<r ; y++ )) do input=$(read -t 1) if [ $(($input)) == $((0)) ] then longitude=$(($longitude+1)) else longitude=$(($longitude-1)) fi for (( x=1 ; x<a ; x++ )) do if [ $(($x)) == $(($longitude)) ] then echo -n -e " \033[32mx\033[0m" elif [ $(($x)) == $((q[$y])) ] then echo -n -e " \033[34mx\033[0m" else echo -n -e " \033[30mo\033[0m" fi done echo " $y" done exit |
Das Ziel ist ein in der Befehlszeile nach unten laufender Plot, auf dem ein X sitzt, der durch die Pfeiltasten gesteuert werden kann. Mein Problem ist, dass ich irgendwie den read-Befehl nicht verstanden habe. So wie ich das verstehe gibt der mi dem parameter "-t 1" nach einer Sekunde entweder "0" bei einer Eingabe oder "1", bei keiner Eingabe zurück. Wenn ich das Programm aber starte, dann läuft das "x" abhänig davon, ob ich in der 14-nten Zeile "0" oder "1" nehme, egal was ich eingebe nach links oder rechts. So, als würde read immer 0 zurückgeben. Wieso ist das so, und wie macht man es weg? Wo ich dabei bin: Wie würde ich das machen, wenn ich möchte, dass obwohl ich etwas eingebe, nichts ausgegeben wird? bei read -s scheint read dann einfach gar nichts zurückzugeben?
Danke schonmal im vorraus!!