eine Usereingabe automatisieren

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von tuxlover, 12.02.2007.

  1. #1 tuxlover, 12.02.2007
    tuxlover

    tuxlover Der den Tux knuddelt

    Dabei seit:
    26.10.2005
    Beiträge:
    2.106
    Zustimmungen:
    0
    Ort:
    berlin
    hallo allerseits,

    ich habe mich gerade gefragt, wie man ein porgramm das eine eingabe vom user verlangt, dazu bringen kann eine standarteingabe zu übergeben.

    Also mal angenommen, ich habe eine auführbare datei, die mich fragt, ob ich diese wirklich ausführen will. ich muss also jedes mal y eingeben. Nun soll aber als standartantwort immer y übergeben werden.

    Wie kann man das möglichst ohne viel aufwand machen?

    gruß tuxlover
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 supersucker, 12.02.2007
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    Ein simples shellscript schreiben dem du als erstes Argument den Programmnamen mit Pfad übergibst und als zweites die "Antwort" des Users.

    Das shell-script ruft dann das Programm mit dem entsprechenden Parameter(n) auf.

    Dürfte (mit Abfangen möglicher Fehler) max. ein 10-Zeiler werden.
     
  4. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    "man bash" und "yes" sollten Dir helfen.

    Gruß, Daniel
     
  5. #4 tuxlover, 12.02.2007
    Zuletzt bearbeitet: 12.02.2007
    tuxlover

    tuxlover Der den Tux knuddelt

    Dabei seit:
    26.10.2005
    Beiträge:
    2.106
    Zustimmungen:
    0
    Ort:
    berlin
    gehen wir mal davon aus, dass ich schon weiß wie man ein shellscript schreibt und man bash mir auch nichts verrät was ich in diversen howtos schon gelsen habe, könnte es etwa so funktionieren?

    Code:
    #auto-user.sh
    #script that automates standart user input
    
    #! /bin/bash
    
    INPUT=y
    
    ./script_that_does_something_and_asks_for_user_input
    $INPUT
    
    exit 0
     
  6. devilz

    devilz Pro*phet
    Administrator

    Dabei seit:
    01.05.2002
    Beiträge:
    12.244
    Zustimmungen:
    0
    Ort:
    Hessen
    Ein simples Ja ;)
     
  7. #6 Xanti, 12.02.2007
    Zuletzt bearbeitet: 12.02.2007
    Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    @tuxlover: Nein, funtioniert so nicht. Es würde das Skript aufrufen und nach Beendigung dessen wird y aufgerufen, was einen Fehler erzeugt, weil y kein Befehl ist. Wenn y die einzige Antwort ist, geht:

    Code:
    yes | ./skript
    Bei anderen Antworten schreib diese in ein File, z.B.

    antworten:

    Code:
    y
    y
    n
    und ruf das Skript mittels:

    Code:
    ./skript < antworten
    
    auf. Dies meinte ich übrigens mit "man bash", da steht alles über pipes und Umleitungen drin.
     
  8. #7 tuxlover, 12.02.2007
    tuxlover

    tuxlover Der den Tux knuddelt

    Dabei seit:
    26.10.2005
    Beiträge:
    2.106
    Zustimmungen:
    0
    Ort:
    berlin
    *andenkopfhau*

    naklar mit ner pipe. warum bin ich daruaf nicht gleich gekommen. jetzt ist alles klar. danke.
     
  9. #8 Wolfgang, 13.02.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    BTW mal so nebenbei gefragt:
    Was ist ein Stanart.
    Stehe auf dem rechten Bein, linkem Bein oder auf beidem? ;)

    Die zweite Gegenfrage beruht auf meiner Beobachtung, dass hier immer öfter die Shebang:
    auftaucht.
    Warum das Leerzeichen (Space)da drinnen?
    Das produziert in vielen modernen Shells Fehler!
    Oder kommt das aus einem (obscured ) OS?

    Gruß Wolfgang
     
  10. #9 Schlaubi_fi.de, 13.02.2007
    Schlaubi_fi.de

    Schlaubi_fi.de Mac OS X User

    Dabei seit:
    22.12.2004
    Beiträge:
    304
    Zustimmungen:
    0
    Ganz nett :D : Standard oder Standart
     
  11. #10 docsnyder, 13.02.2007
    docsnyder

    docsnyder another local guru

    Dabei seit:
    12.12.2006
    Beiträge:
    18
    Zustimmungen:
    0
    Ort:
    Darmstadt
    Das geht natürlich nur bei Skripten/Programmen, die STDIN nicht flushen, bevor sie eine Eingabe erwarten (wie es z.B. Login-Anwendungen typischerweise tun).

    In diesem Fall kann die Eingabe mit Expect gehandelt werden.

    Greetz, Doc
     
  12. #11 Xanti, 13.02.2007
    Zuletzt bearbeitet: 13.02.2007
    Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Natürlich, Du hast Recht. Den Fall hab ich erstmal garnicht betrachtet. Das wäre dann zur Sprache gekommen, wenn eine Antwort in der Art "Es geht nicht!" gekommen wäre. ;)
     
  13. #12 docsnyder, 13.02.2007
    docsnyder

    docsnyder another local guru

    Dabei seit:
    12.12.2006
    Beiträge:
    18
    Zustimmungen:
    0
    Ort:
    Darmstadt
    @Xanti

    ... war ja auch nur als Ergänzung gedacht. Natürlich funktioniert Dein Ansatz in den meisten Fällenund es gilt ja auch: "keep it as simple as possible"

    ;o)

    Greetz, Doc
     
  14. #13 tuxlover, 14.02.2007
    tuxlover

    tuxlover Der den Tux knuddelt

    Dabei seit:
    26.10.2005
    Beiträge:
    2.106
    Zustimmungen:
    0
    Ort:
    berlin
    @wolfgang danke für den hinweis. habe s wirklich nicht bemerkt. gehen wir mal weiter davon aus, dass ich das alles erst so nach und nach lerne und ich dem zufolge auch nur das wissen kann, was ichg bis dahin gelernt habe. und im advanced bash scripting guide (abs) war der Shebang eben auch so und nicht anders dargestellt.

    die viel interessantere frage ist doch, warum sollte das fehler produzieren und
    wie äußern sich diese.
     
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. #14 supersucker, 14.02.2007
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    Ganz einfach: Weil manche Shells das halt eben ohne Leerzeichen erwarten.

    Du wirst dann sowas kriegen wie "bad interpreter" oder Ähnliches....
     
  17. #15 tuxlover, 14.02.2007
    Zuletzt bearbeitet: 14.02.2007
    tuxlover

    tuxlover Der den Tux knuddelt

    Dabei seit:
    26.10.2005
    Beiträge:
    2.106
    Zustimmungen:
    0
    Ort:
    berlin
    ja aber ich nutze ja die bash und mittlerweile kann man behaupten das die bash wohl standard bei linux-distributionen ist. außerdem interessiert mich das herzlich wenig, da die scripte ja sowieso nur bei mir laufen sollen. zudem wirkt es etwas übersichtlicher.
     
Thema:

eine Usereingabe automatisieren

Die Seite wird geladen...

eine Usereingabe automatisieren - Ähnliche Themen

  1. Wie kann ich x Zeichen hinter einem bestimmten Wort ausgeben ?

    Wie kann ich x Zeichen hinter einem bestimmten Wort ausgeben ?: In mehreren Dateien ist immer mehrfach ein bestimmtes Wort enthalten, gefolgt von einem "=". Ich möchte mir die dahinter folgenden 10 Zeichen...
  2. Keine Benachrichtigungen im Vollbild Modus

    Keine Benachrichtigungen im Vollbild Modus: Arch Linux Plasma 5.8 Weiss einer ob das gehen sollte, bzw kann mal einer testen ob es bei ihm geht, gerne auch mit anderen kde/plasma versionen....
  3. Kontextmenü mit einem Skript verbinden

    Kontextmenü mit einem Skript verbinden: Abend, wenn ich z. B. eine simple Umwandlung eines Bildformates in ein anderes über das KDE-Kontextmenü (Servicemenü nennt es sich im KDE oder...
  4. Alle Dateien eines Verzeichnisses mit einer anderen Datei vergleichen

    Alle Dateien eines Verzeichnisses mit einer anderen Datei vergleichen: Hallo, ich habe ein Verzeichnis, darin enthalten sind mehrere Dateien. Nun möchte ich alle Dateien (Parameter $1) gegen eine konstante Datei...
  5. 2 Zeilen aus einer txt auslesen

    2 Zeilen aus einer txt auslesen: Hallo Leute, ich habe eine Datei die immer aus zwei zusammenhängenden Zeilen besteht, als Beispiel: DE0006231004 # 15,04 Infineon DE0005785604...