Mailinglist Archive: opensuse-de (4664 mails)
| < Previous | Next > |
Re: Maybe OT: Problem mit Shell-Programmierung auf einem embedded Linux
- From: Alexander Balsam <a.balsam@xxxxxxxxxxxxx>
- Date: 17 Feb 2004 17:37:46 +0100
- Message-id: <1077035866.2254.32.camel@xxxxxxxxxxxxxxxxxxxx>
Hallo Joerg,
probier das Script mal aus, wenn du auf der ersten Textconsole
eingeloggt bist.
read -t 2000 VARIABLE </dev/tty1
bewirkt das das read von tty1 liest. Wenn du es auf einem anderen
Terminal probierst, dann läuft es in den Timeout und interpretiert
deine Eingabe als neuen Befehl, welchen es nach dem Shell Script
ausführt.
Gruß
Alexander
On Tue, 2004-02-17 at 16:17, Jens Nixdorf wrote:
> Joerg Thuemmler schrieb:
>
> > ja wenn Du das Zeug beim booten startest, hat es kein kontrollierendes
> > Terminal, d.h. stdin/stdout/stderr fehlen resp. werden durch /dev/null oder so
> > geliefert. In so einem Falle mußt Du sie AFAIK umlenken: z.B.
> > read -t 2000 VARIABLE </dev/tty1, dito Ausgabe und Fehler.
>
> Danke, das hat mich schon ein gutes Stück weitergebracht, jetzt ist der
> Timeout wenigstens noch nicht erreicht und das Skript wartet schön auf
> mich. Dafür nimmt es Script jetzt die Eingabe nicht so an wie es soll. Hmpf.
>
> Hier der Code:
>
> echo "1: Aktion 1"
> echo "2: Aktion 2"
> read -t 25 AUSWAHL < /dev/tty1
> if [ "$AUSWAHL" = "1" ]; then
> echo "1 gedrückt"
> elif [ "$AUSWAHL" = "2" ]; then
> echo "2 gedrückt"
> else
> echo "Timeout erreicht"
> fi
>
> Wenn ich jetzt innerhalb der 25 s die 1 oder 2 eingebe, sagt mir das
> Script nur: "1 nicht gefunden" oder "2 nicht gefunden". Leider reagiert
> das Script auch nicht auf folgenden Eintrag in der ersten Zeile:
>
> #!/bin/bash -x
>
> womit ich ja sonst wenigstens etwas mehr sehen könnte, was das Script
> macht. Ich habe auch schon mit den Parametern von read rumgespielt, z.B.
> einen Prompt gesetzt (-p PROMPT) usw. Auch rufe ich das Script jetzt
> erst in .profile auf.
>
> Was kann da jetzt noch falsch sein?
>
>
> mfG, Jens
>
>
probier das Script mal aus, wenn du auf der ersten Textconsole
eingeloggt bist.
read -t 2000 VARIABLE </dev/tty1
bewirkt das das read von tty1 liest. Wenn du es auf einem anderen
Terminal probierst, dann läuft es in den Timeout und interpretiert
deine Eingabe als neuen Befehl, welchen es nach dem Shell Script
ausführt.
Gruß
Alexander
On Tue, 2004-02-17 at 16:17, Jens Nixdorf wrote:
> Joerg Thuemmler schrieb:
>
> > ja wenn Du das Zeug beim booten startest, hat es kein kontrollierendes
> > Terminal, d.h. stdin/stdout/stderr fehlen resp. werden durch /dev/null oder so
> > geliefert. In so einem Falle mußt Du sie AFAIK umlenken: z.B.
> > read -t 2000 VARIABLE </dev/tty1, dito Ausgabe und Fehler.
>
> Danke, das hat mich schon ein gutes Stück weitergebracht, jetzt ist der
> Timeout wenigstens noch nicht erreicht und das Skript wartet schön auf
> mich. Dafür nimmt es Script jetzt die Eingabe nicht so an wie es soll. Hmpf.
>
> Hier der Code:
>
> echo "1: Aktion 1"
> echo "2: Aktion 2"
> read -t 25 AUSWAHL < /dev/tty1
> if [ "$AUSWAHL" = "1" ]; then
> echo "1 gedrückt"
> elif [ "$AUSWAHL" = "2" ]; then
> echo "2 gedrückt"
> else
> echo "Timeout erreicht"
> fi
>
> Wenn ich jetzt innerhalb der 25 s die 1 oder 2 eingebe, sagt mir das
> Script nur: "1 nicht gefunden" oder "2 nicht gefunden". Leider reagiert
> das Script auch nicht auf folgenden Eintrag in der ersten Zeile:
>
> #!/bin/bash -x
>
> womit ich ja sonst wenigstens etwas mehr sehen könnte, was das Script
> macht. Ich habe auch schon mit den Parametern von read rumgespielt, z.B.
> einen Prompt gesetzt (-p PROMPT) usw. Auch rufe ich das Script jetzt
> erst in .profile auf.
>
> Was kann da jetzt noch falsch sein?
>
>
> mfG, Jens
>
>
| < Previous | Next > |