Bei einem .sh-Skript auf eine Eingabe warten und dazu Backspace erlauben [Gelöst]

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
Benutzeravatar
martij
Beiträge: 63
Registriert: 03.09.2018 11:48:37
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: CH
Kontaktdaten:

Bei einem .sh-Skript auf eine Eingabe warten und dazu Backspace erlauben [Gelöst]

Beitrag von martij » 15.03.2021 17:07:11

Hallo zusammen

Warum fügt backspace ein Zeichen ein, statt eines zu löschen?

Weiss das jemand? Falls ja wäre ich für nen Tipp sehr dankbar!
Zuletzt geändert von martij am 16.03.2021 12:12:33, insgesamt 3-mal geändert.
Grüsse, Martin

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

Re: Bei einem .sh-Skript auf ne Eingabe waren und datz Backspace erlauben

Beitrag von Meillo » 15.03.2021 17:19:00

Wenn du die zwei Vertipper im Titel korrigierst und ein bisschen mehr Infos lieferst, dann erhoeht das die Wahrscheinlichkeit fuer hilfreiche Antworten. Oder erwartest du, dass sich die Antwortenden bei einem fremden Problem Muehe geben und Zeit investieren, wenn du das noch nicht mal bei deinem eigenen Problem fuer noetig haeltst? ;-)
Use ed once in a while!

Benutzeravatar
martij
Beiträge: 63
Registriert: 03.09.2018 11:48:37
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: CH
Kontaktdaten:

Re: Bei einem .sh-Skript auf eine Eingabe waren und dazu Backspace erlauben

Beitrag von martij » 15.03.2021 17:23:55

Korrigiert.

Code hier -> viewtopic.php?f=27&t=180444
Grüsse, Martin

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

Re: Bei einem .sh-Skript auf eine Eingabe waren und dazu Backspace erlauben

Beitrag von Meillo » 15.03.2021 21:15:16

martij hat geschrieben: ↑ zum Beitrag ↑
15.03.2021 17:23:55
Korrigiert.
Gut.
martij hat geschrieben: ↑ zum Beitrag ↑
15.03.2021 17:23:55
Code hier -> viewtopic.php?f=27&t=180444
Welchen read-Befehl meinst du? Den:

Code: Alles auswählen

read -p "Please enter SFTP server: " -i server.tld -e REMOTE_SERVER
Bei mir kann ich da Backspace druecken und das letzte Zeichen verschwindet.

Terminal-Settings nicht in Ordnung? `stty sane' ausprobiert? Falscher Wert in $TERM?

Du musst uns mehr Infos ueber dein Setup liefern und an welcher Stelle das Problem genau auftritt. Extrahiere die eine Zeile im Code. Teste sie separat. Tritt das Problem dann auch auf? Teste sie wenn moeglich auf einem anderen System. Ist es da auch so? Und: Welches Zeichen wird denn eingefuegt, wenn du Backspace drueckst?

... alternativ koenntest du auch bei feltel unseren Antrag fuer Kristallkugeln fuer die Mods nochmal unterstuetzen. Vielleicht wird das dann ja endlich mal was. :THX:
Use ed once in a while!

Benutzeravatar
heinz
Beiträge: 535
Registriert: 20.12.2007 01:43:49

Re: Bei einem .sh-Skript auf eine Eingabe waren und dazu Backspace erlauben

Beitrag von heinz » 15.03.2021 21:34:50

Da hat Meillo wohl recht, sehr wenige Infos... Aber ich denke es geht um diese Zeilen hier:

Code: Alles auswählen

prompt="Please enter SFTP password: ";
while IFS= read -p "$prompt" -r -s -n 1 char
do
  if [[ $char == $'\0' ]]; then
    break;
  fi;
  prompt='*';
  REMOTE_PASSWORD+="$char";
done;
Hab mal was "Gebastelt". Ist nicht perfekt aber vlt. ein Ausgangspunkt:

Code: Alles auswählen

prompt="Please enter SFTP password: "
while read -p "$prompt" -r -s -n 1 char
do
  test -z "$char" && break
  if test "$(echo -n "$char"|hexdump -e '"%_c"')" == '177'
  then
    echo -ne '\e[2D  \e[2D'
    REMOTE_PASSWORD="${REMOTE_PASSWORD:0:$((${#REMOTE_PASSWORD}-1))}"
  else
    prompt='*'
    REMOTE_PASSWORD+="$char"
  fi
done
Der Code ist kaum getestet und hat Probleme, wenn man alle Zeichen wieder loescht / wenn REMOTE_PASSWORD leer ist...

Gruss,
heinz

P.S.
Es ist immer noch ein Vertipper im Titel...

Benutzeravatar
martij
Beiträge: 63
Registriert: 03.09.2018 11:48:37
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: CH
Kontaktdaten:

Re: Bei einem .sh-Skript auf eine Eingabe warten und dazu Backspace erlauben

Beitrag von martij » 16.03.2021 09:28:20

Vielen Dank!! :-)
Grüsse, Martin

Benutzeravatar
martij
Beiträge: 63
Registriert: 03.09.2018 11:48:37
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: CH
Kontaktdaten:

Re: Bei einem .sh-Skript auf eine Eingabe warten und dazu Backspace erlauben

Beitrag von martij » 16.03.2021 09:42:33

Ja, das letzte Zeichen darf man nicht löschen - sonst gibt's Problem mit Deinem Beispiel. Trotzdem danke.
Grüsse, Martin

Benutzeravatar
martij
Beiträge: 63
Registriert: 03.09.2018 11:48:37
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: CH
Kontaktdaten:

Re: Bei einem .sh-Skript auf eine Eingabe warten und dazu Backspace erlauben

Beitrag von martij » 16.03.2021 09:56:04

Vielleicht wiess jemand wie man das Problem mit dem letzten Zeichen noch umgeht. Dann wär's perfekt... :THX:
Grüsse, Martin

Benutzeravatar
heinz
Beiträge: 535
Registriert: 20.12.2007 01:43:49

Re: Bei einem .sh-Skript auf eine Eingabe warten und dazu Backspace erlauben

Beitrag von heinz » 16.03.2021 11:23:35

Nicht sehr schoen aber scheint zu "gehen"...

Code: Alles auswählen

echo -n "Please enter SFTP password: "
while read -rsn1 char
do
  test -z "$char" && break
  if test "$(echo -n "$char"|hexdump -e '"%_c"')" == '177'
  then
    if test ${#REMOTE_PASSWORD} -gt 0
    then
      echo -ne '\e[1D \e[1D'
      REMOTE_PASSWORD="${REMOTE_PASSWORD:0:$((${#REMOTE_PASSWORD}-1))}"
    fi
  else
    echo -n '*'
    REMOTE_PASSWORD+="$char"
  fi
done
Gruss,
heinz

Benutzeravatar
martij
Beiträge: 63
Registriert: 03.09.2018 11:48:37
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: CH
Kontaktdaten:

Re: Bei einem .sh-Skript auf eine Eingabe warten und dazu Backspace erlauben

Beitrag von martij » 16.03.2021 12:12:06

Vielen Dank, Code muss mE. nicht "schön" sein. Nur einigermassen effizient ablaufen (ohne grosse Umwege) und funktionieren - and that's it. :THX: :THX: :THX:
Grüsse, Martin

Antworten