Anzeige:
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 19

Thema: Bash Menu erstellen

  1. #1
    Registrierter Benutzer
    Registriert seit
    Jul 2003
    Beiträge
    66

    Bash Menu erstellen

    Hallo zusammen

    Ich will ein Menu machen.

    Und zwar dass ich es so aufrufen kann:

    ./menu

    und dann sollte sowas ähnliches kommen:

    Bitte wählen Sie:
    1.) blablabla
    2.) ajsjslalsd
    3.) iwcnalös
    4.) appwkdn

    und nachher kann man die Zahl drücken, damit etwas ausgeführt wird.

    Sorry dass ich es so doof beschreibe.

    Danke

  2. #2
    Baaad Mutherplucker
    Registriert seit
    Jul 2003
    Beiträge
    283
    ausgabe machst du mit
    Code:
    echo "text"
    einlesen einfach mit
    Code:
    read x
    in $x ist dann gespeichert, was der user eingegeben hat

    und dann kannst ganz simpel mit ner if-Konstruktion weitermachen

  3. #3
    Script-Terrorist Avatar von Blackhawk
    Registriert seit
    Nov 2003
    Ort
    Ehningen
    Beiträge
    1.346
    besser noch mit ner case-Anweisung
    Servus und bis bald,

    Blackhawk
    ==================================================
    Linux - manchmal steh ich nachts auf, und installier mir noch eins...

  4. #4
    Baaad Mutherplucker
    Registriert seit
    Jul 2003
    Beiträge
    283
    Zitat Zitat von Blackhawk
    besser noch mit ner case-Anweisung
    ginge auch, sicher
    aber wer weiß, wie weit er in sowas fortgeschritten ist...
    denke für den Anfang ist bei 4 Fällen ne if Sache einfacher und ausreichend

  5. #5
    Registrierter Benutzer Avatar von Reset2000
    Registriert seit
    Apr 2003
    Beiträge
    331
    Es gibt auch einen Automatischen Menu ersteller und der heißt dialog,
    dialog -help
    cdialog (ComeOn Dialog!) version 0.9b-20031002

    * Display dialog boxes from shell scripts *

    Usage: dialog <options> { --and-widget <options> }
    where options are "common" options, followed by "box" options

    Special options:
    [--create-rc "Ifile"]
    Common options:
    [--aspect <ratio>] [--backtitle <backtitle>] [--beep] [--beep-after]
    [--begin <y> <x>] [--cancel-label <str>] [--clear] [--colors]
    [--cr-wrap] [--default-item <str>] [--defaultno] [--exit-label <str>]
    [--extra-button] [--extra-label <str>] [--help-button]
    [--help-label <str>] [--ignore] [--item-help] [--max-input <n>]
    [--no-cancel] [--no-collapse] [--no-kill] [--no-shadow]
    [--ok-label <str>] [--output-fd <fd>] [--print-maxsize] [--print-size]
    [--print-version] [--separate-output] [--separate-widget <str>]
    [--shadow] [--size-err] [--sleep <secs>] [--stderr] [--stdout]
    [--tab-correct] [--tab-len <n>] [--timeout <secs>] [--title <title>]
    [--trim] [--version]
    Box options:
    --calendar <text> <height> <width> <day> <month> <year>
    --checklist <text> <height> <width> <list height> <tag1> <item1> <status1>...
    --form <text> <height> <width> <form height> <label1> <l_y1> <l_x1> <item1> <i_y1> <i_x1> <flen1> <ilen1>...
    --fselect <filepath> <directory> <height> <width>
    --gauge <text> <height> <width> [<percent>]
    --infobox <text> <height> <width>
    --inputbox <text> <height> <width> [<init>]
    --inputmenu <text> <height> <width> <menu height> <tag1> <item1>...
    --menu <text> <height> <width> <menu height> <tag1> <item1>...
    --msgbox <text> <height> <width>
    --passwordbox <text> <height> <width> [<init>]
    --radiolist <text> <height> <width> <list height> <tag1> <item1> <status1>...
    --tailbox <file> <height> <width>
    --tailboxbg <file> <height> <width>
    --textbox <file> <height> <width>
    --timebox <text> <height> <width> <hour> <minute> <second>
    --yesno <text> <height> <width>

    Auto-size with height and width = 0. Maximize with height and width = -1.
    Global-auto-size if also menu_height/list_height = 0.

  6. #6
    Registrierter Benutzer
    Registriert seit
    Jul 2003
    Beiträge
    66
    Zitat Zitat von Blackhawk
    besser noch mit ner case-Anweisung
    Vielen Dank.

    Könntest du mir vielleicht ein simples Beispiel machen?

    Ich progge im PHP und VB. NET. Also bin ich nicht sehr unerfahren.

    Nur Auf Linux ist es das erste mal, dass ich sowas machen muss!

    Dankeschön

  7. #7
    Registrierter Benutzer
    Registriert seit
    Jul 2003
    Beiträge
    66
    Zitat Zitat von Reset2000
    Es gibt auch einen Automatischen Menu ersteller und der heißt dialog,
    dialog -help
    cdialog (ComeOn Dialog!) version 0.9b-20031002

    * Display dialog boxes from shell scripts *

    Usage: dialog <options> { --and-widget <options> }
    where options are "common" options, followed by "box" options

    Special options:
    [--create-rc "Ifile"]
    Common options:
    [--aspect <ratio>] [--backtitle <backtitle>] [--beep] [--beep-after]
    [--begin <y> <x>] [--cancel-label <str>] [--clear] [--colors]
    [--cr-wrap] [--default-item <str>] [--defaultno] [--exit-label <str>]
    [--extra-button] [--extra-label <str>] [--help-button]
    [--help-label <str>] [--ignore] [--item-help] [--max-input <n>]
    [--no-cancel] [--no-collapse] [--no-kill] [--no-shadow]
    [--ok-label <str>] [--output-fd <fd>] [--print-maxsize] [--print-size]
    [--print-version] [--separate-output] [--separate-widget <str>]
    [--shadow] [--size-err] [--sleep <secs>] [--stderr] [--stdout]
    [--tab-correct] [--tab-len <n>] [--timeout <secs>] [--title <title>]
    [--trim] [--version]
    Box options:
    --calendar <text> <height> <width> <day> <month> <year>
    --checklist <text> <height> <width> <list height> <tag1> <item1> <status1>...
    --form <text> <height> <width> <form height> <label1> <l_y1> <l_x1> <item1> <i_y1> <i_x1> <flen1> <ilen1>...
    --fselect <filepath> <directory> <height> <width>
    --gauge <text> <height> <width> [<percent>]
    --infobox <text> <height> <width>
    --inputbox <text> <height> <width> [<init>]
    --inputmenu <text> <height> <width> <menu height> <tag1> <item1>...
    --menu <text> <height> <width> <menu height> <tag1> <item1>...
    --msgbox <text> <height> <width>
    --passwordbox <text> <height> <width> [<init>]
    --radiolist <text> <height> <width> <list height> <tag1> <item1> <status1>...
    --tailbox <file> <height> <width>
    --tailboxbg <file> <height> <width>
    --textbox <file> <height> <width>
    --timebox <text> <height> <width> <hour> <minute> <second>
    --yesno <text> <height> <width>

    Auto-size with height and width = 0. Maximize with height and width = -1.
    Global-auto-size if also menu_height/list_height = 0.
    Ah, ich denke ich habe dazu gerade ein Beispiel gefunden:

    Code:
       1: #!/bin/bash
       2: 
       3: # Führt vordefinierte Befehle aus. 
       4: # Die Ausführung dieses Skripts unter sudo als root erlauben
       5: 
       6: # Temporäre Datei für die Ergebnisse
       7: tempdatei=/tmp/gwinternet.tmp.$$
       8: 
       9: # Dialogfenster
      10: dialog --menu "Wählen Sie den Dienst" 20 50 10 \
      11:         0       "Swap aktivieren" \
      12:         1       "Swap deaktiviren" \
      13:         2       "Maillogdatei anzeigen" \
      14:         3       "Rechner herunterfahren" \
      15:         4       "Rechner neu starten" \
      16:         2> $tempdatei
      17: 
      18: eingabe=$(cat $tempdatei)
      19: 
      20: #Auswerten      
      21: echo "Sie haben ausgewählt: $eingabe"
      22: 
      23: case $eingabe in
      24:   0) # Swap aktivieren
      25:      /sbin/swapon /swap
      26:      if [ $? -gt 0 ]
      27:      then
      28:        echo "Fehler bei Ausführung" > $tempdatei
      29:      else 
      30:        /sbin/swapon -s > $tempdatei
      31:      fi   
      32:      dialog --textbox $tempdatei 20 70
      33:      ;;
      34: 
      35:   1) # Swap deaktivieren
      36:      /sbin/swapoff /swap
      37:      if [ $? -gt 0 ]
      38:      then
      39:        echo "Fehler bei Ausführung" > $tempdatei
      40:      else 
      41:        /sbin/swapon -s > $tempdatei
      42:      fi   
      43:      dialog --textbox $tempdatei 20 70
      44:      ;;
      45: 
      46:   2) # /var/log/mail
      47:      dialog --textbox /var/log/mail 20 70
      48:      ;;
      49: 
      50:   3) # Rechner runterfahren
      51:      # Aufräumen
      52:      rm -f $tempdatei
      53:      echo "Der Rechner wird heruntergefahren"  
      54:      /sbin/shutdown -h now
      55:      ;;
      56: 
      57:   4) # Rechner neu starten
      58:      # Aufräumen
      59:      rm -f $tempdatei
      60:      echo "Der Rechner wird neu gestartet"  
      61:      /sbin/shutdown -r now
      62:      ;;
      63: 
      64:   *) # Falscher Wert
      65:      echo "Falsche Eingabe!"
      66:      ;;
      67: esac
      68: 
      69: 
      70: # Aufräumen
      71: rm -f $tempdatei

    Danke

  8. #8
    Registrierter Benutzer
    Registriert seit
    Jul 2003
    Beiträge
    66
    was ist denn der Unterscheid zwischen

    Code:
    echo "test" 2> test
    echo "test" >   test
    ?
    Danke

    und wie kann ich machen, dass ich eine Zeile einer Datei anfügen kann?

    Danke

    // EDIT:

    Ich habs schon gefunden:

    mit echo test >> test.tmp

    kann ich an eine bereits bestehende Datei anfügen.
    Geändert von crivi (26.04.04 um 10:18 Uhr)

  9. #9
    Registrierter Benutzer
    Registriert seit
    Jan 2003
    Beiträge
    2.325
    Zitat Zitat von crivi
    was ist denn der Unterscheid zwischen

    Code:
    echo "test" 2> test
    echo "test" >   test
    echo "test" 2> test schreibt stderr (Standardfehlerausgabe) in die Datei test.
    echo "test" > test schreibt stdout (Standardausgabe) in die Datei test.

  10. #10
    Registrierter Benutzer
    Registriert seit
    Jul 2003
    Beiträge
    66
    ah okay.

    Und wie kann ich wenn ich in einer Datei test 2 Zeilen habe, die Zeile 1 einer Variable zuweisen und die Zeile 2 einer anderen Variable?

    Danke

  11. #11
    komplett "ausgebleicht" Avatar von Der Gestreifte
    Registriert seit
    May 2003
    Ort
    904**
    Beiträge
    3.247
    Und wie kann ich wenn ich in einer Datei test 2 Zeilen habe, die Zeile 1 einer Variable zuweisen und die Zeile 2 einer anderen Variable?
    VAR1=`sed -n 1p datei.txt`
    VAR2=`sed -n 2p datei.txt`

    Das mit dem Auswahlmenü ginge auch schön mit "select":
    Code:
    select WORT in erste zweites; do echo $WORT; break; done

  12. #12
    :) Hijacker Avatar von peschmae
    Registriert seit
    Mar 2002
    Ort
    Bern
    Beiträge
    2.681
    Von Dialog gibts übrigens jede Menge Klone - u.a. welche für mit Qt/KDE und mit Gtk/Gnome

    MfG Peschmä
    Debian Sid User

  13. #13
    Registrierter Benutzer
    Registriert seit
    Jul 2003
    Beiträge
    66
    Kann mir jemand sagen was da dran nicht stimmen sollte?

    Er hupft mir von anfang an gerade nach *)

    Wieso das?

    #!/bin/bash

    Code:
    tempdatei=/root/internet/temp.tmp
    userdatei=/root/internet/user.tmp
    passdatei=/root/internet/passwd.tmp
    dialog --msgbox "Herzlich Willkommen in der Administrationsoberflaeche" 5 70
    dialog --menu "Waehlen Sie aus:" 20 50 10 \
    	0	"LAMPP neustarten" \
    	1	"Bind neustarten" \
    	2	"Maillog anzeigen" \
    	3	"Messages anzeigen" \
    	4	"Postfix neustarten" \
    	5	"Benutzer hinzufuegen" \
    	6	"Benutzer loeschen" \ 
    	2> $tempdatei
    
    eingabe=$(cat $tempdatei)
    
    case $eingabe in
      0) #LAMPP neustarten
    /opt/lampp/lampp restart > $tempdatei
    dialog --textbox $tempdatei 20 70
    ;;
      1) #Bind beenden und neu starten
    kill -9 `cat /var/run/named/named.pid`
    echo "Bind wurde beendet" > $tempdatei
    /etc/rc.d/init.d/named start 
    echo "Bind wurde gestartet" >> $tempdatei
    dialog --textbox $tempdatei 20 70
    ;;
      2) #Maillog anzeigen
    dialog --textbox /var/log/maillog 20 70
    ;;
      3) #Messages anzeigen
    dialog --textbox /var/log/messages 20 70
    ;;
      4) #Postfix neustarten
    postfix stop > $tempdatei 
    echo "Postfix wurde erfolgreich gestoppt" >> $tempdatei
    postfix start >> $tempdatei
    echo "Postfix wurde erflogreich gestartet" >> $tempdatei
    dialog --textbox $tempdatei 20 70
    ;;
      5) #Benutzer hinzufuegen
    dialog --inputbox Benutzername 20 70 2> $userdatei
    dialog --inputbox Passwort 20 70 2> $passdatei
    Benutzername=$(cat $userdatei)
    Passwort=$(cat $passdatei)
    adduser -g ftp -G postfix -s /sbin/nologin -d /home/$Benutzername -p `./crypt $Passwort`  $Benutzername
    echo > $userdatei
    echo > $passdatei
    echo "Der Benutzer $Benutzername wurde erfolgreich hinzugrfuegt" > $tempdatei
    dialog --textbox $tempdatei 20 70
    ;;
      6) #Benutzer loeschen
    dialog --inputbox Benutzername 20 70 2> $tempdatei
    Username=$(cat $tempdatei)
    userdel $Username
    echo "Der Benutzer $Username wurde erfolgreich geloescht" > $tempdatei
    dialog --textbox $tempdatei 20 70
    ;;
      *) #Falscher Wert
    echo "Sie haben eine falsche Eingabe getaetigt" > $tempdatei
    echo "Druecken Sie auf VERLASSEN und starten Sie die" >> $tempdatei
    echo "Administrationsoberflaeche neu" >> $tempdatei
    echo >> $tempdatei
    echo "Vielen Dank" >> $tempdatei 
    dialog --textbox $tempdatei 20 70
    ;;
    esac
    clear
    rm -f $tempdatei
    rm -f $userdatei
    rm -f $passdatei
    Dankeschön

  14. #14
    Registrierter Benutzer
    Registriert seit
    Jul 2003
    Beiträge
    66
    schon okay. Funktioniert schon wieder. Weiss allerdings auch nicht genau woran es gelegen hat.

  15. #15
    Registrierter Benutzer
    Registriert seit
    Jul 2003
    Beiträge
    66
    ok noch eine kleine Frage:

    Wie kann ich abfragen ob eine Datei leer ist?


    Danke

Ähnliche Themen

  1. usb-festplatten
    Von w.freudenstein im Forum Linux Allgemein
    Antworten: 11
    Letzter Beitrag: 10.02.04, 19:27
  2. need help bei linux u. 3d
    Von mexx im Forum X-Konfiguration
    Antworten: 16
    Letzter Beitrag: 24.07.03, 20:30
  3. Antworten: 1
    Letzter Beitrag: 02.03.03, 20:10
  4. RTCW mit Port...
    Von HellTron im Forum Spielen Allgemein
    Antworten: 2
    Letzter Beitrag: 24.08.02, 15:54
  5. wieso machst du das "RTCW" !!! :(
    Von Cyberbob im Forum Spielen Allgemein
    Antworten: 12
    Letzter Beitrag: 14.08.02, 19:36

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •