Forum: PC-Programmierung Raspberry PI Zeichen einlesen


von RPI (Gast)


Lesenswert?

Hallo,

ich möchte in einem Shell Skript ein Zeichen einlesen.

------------------

#!/bin/bash
read -n 1 val
echo $val

ergibt
test.sh: 2: read: illegal option -n

------------------

gebe ich auf der Console

read -n 1 val

ein, dann blockiert er bis ich ein Zeichen eingegeben habe
und gibt dieses anschließend aus. Warum funktioniert das
nicht im Shell Skript ??

Gruß

von nixwasigenau (Gast)


Lesenswert?

Hab jetzt keinen raspi zur Hand, aber ist der Pfad /bin/bash korrekt ?

von Tom K. (ez81)


Lesenswert?

Steht wirklich #!/bin/bash im Script und nicht vielleicht #!/bin/sh?

Letzteres ist in manchen Distributionen (welche ist auf deinem Pi?) auf 
dash statt bash verlinkt, das würde die Fehlermeldung erklären.

von RPI (Gast)


Lesenswert?

Hi,

Raspbian Jessie
Version: May 2016
Release date: 2016-05-27
Kernel version: 4.4

Hatte bereits beide Shebangs versucht, leider beide mit gleichem 
Ergebnis

von shell (Gast)


Lesenswert?

RPI schrieb:
> Raspbian Jessie
> Version: May 2016
> Release date: 2016-05-27
> Kernel version: 4.4
>
> Hatte bereits beide Shebangs versucht, leider beide mit gleichem
> Ergebnis

...die Frage lautet ja auch, welche Shell nun wirklich auf dem Pi zum 
Einsatz kommt!

von Dieter D (Gast)


Lesenswert?

Mit folgender Option wartet read eine Sekunde und macht dann weiter wenn 
keine Eingabe erfolgte.

read -n 1 -t 1 val

http://linuxcommand.org/lc3_man_pages/readh.html

von Daniel A. (daniel-a)


Lesenswert?

Wie startest du das script? Das #! wird nur beachtet, wenn man es als 
Kommando oder per ./test.sh aufruft. Wenn man /sh test.sh/ eingibt wird 
test.sh immer von sh interpretiert, und bei /bash test.sh/ immer von 
bash.

von Kaj (Gast)


Lesenswert?

Ist das Script auch ausführbar?

chmod u=rwx,go= mein_script.sh

von RPI (Gast)


Lesenswert?

>Wie startest du das script? Das #! wird nur beachtet, wenn man es als
>Kommando oder per ./test.sh aufruft. Wenn man /sh test.sh/ eingibt wird
>test.sh immer von sh interpretiert, und bei /bash test.sh/ immer von
>bash.

Vielen Dank für den Hinweis, daran hatte ich nicht gedacht.
Mit ./test.sh funktioniert alles wie gewünscht.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.