bash read

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: bash read

Beitrag von Cae » 26.01.2015 23:19:06

Code: Alles auswählen

...
tty -s && {
# interaktiver Code
}
...
oder je nach Vorlieben auch in einen if-Block eingepackt.

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

rsi
Beiträge: 31
Registriert: 23.01.2015 05:56:49

Re: bash read

Beitrag von rsi » 26.01.2015 23:30:44

Ok, aber mit tty müsste ich ssh -t aufrufen, da ich mich dazu auf meinem Server mit ssh einloggen muss. :)
Ich hoffe zumindest, dass es dann mit SSH funktioniert.
Es gibt Menschen, die Helfen können und es gibt den Rest, die man gleich ignorieren sollte...

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: bash read

Beitrag von Cae » 27.01.2015 03:49:41

Naja, du hast halt beim aktuellen Design nur die Unterscheidungsmoeglichkeit zwischen TTY/kein TTY. Es gibt keine Moeglichkeit, herauszufinden, ob stdin nun eine Pipe der Shell ist, die auf eine Datei zeigt, oder ob da jemand z.B. per

Code: Alles auswählen

$ echo foo | ssh user@host some/script
Daten ueber eine anders geartete Pipe reinschiebt. Man wuerde an dieser Stelle entweder den interaktiven Kram per globalem Flag deaktivieren (-f, --force waere da ueblich fuer "mach' einfach, was du fuer richtig haelst"). Oder man macht das interaktive read direkt aus /dev/tty, was dann schlimmstenfalls fuer immer blockt, aber keine Eingangsdaten wegfruehstueckt.

Sofern du dein Skript ueber eine interaktive Shell startest, hast du sehr wahrscheinlich ein TTY, auch ohne explizites Anfordern per ssh -t.

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Benutzeravatar
Meillo
Moderator
Beiträge: 8818
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: bash read

Beitrag von Meillo » 27.01.2015 08:16:26

rsi hat geschrieben: Gerade getestet, das -N1 bei dem read prompt ist schuld. Oh man... und ich such da wie blöd herum. Danke für den Hinweis! :THX:
Tada! Tada! Tada! :-D


Und nochmal: ``Given enough eyeballs, all bugs are shallow.''
Use ed once in a while!

newdeb
Beiträge: 134
Registriert: 03.02.2011 11:11:21
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Frankfurt

Re: bash read

Beitrag von newdeb » 27.01.2015 19:15:17

Wenn du auf einen anderen Filedeskriptor ausweichst, kommen sich die reads nicht ins Gehege:

Code: Alles auswählen

while read -u3 -r VAR; do 
  echo "$VAR" 
  read -p "Naechste Zeile: " 
  [[ $REPLY != [jJ] ]] && break 
done 3< input

rsi
Beiträge: 31
Registriert: 23.01.2015 05:56:49

Re: bash read

Beitrag von rsi » 27.01.2015 23:35:15

Danke, auch eine Möglichkeit.
Aber ich habe den Prompt jetzt erst mal raus geschmissen, damit das Script automatisch ablaufen kann.
Die anderen Daten werde ich über ein neues Script verarbeiten... so geht es dann auch.
Es gibt Menschen, die Helfen können und es gibt den Rest, die man gleich ignorieren sollte...

Antworten