Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: sourceserver.info. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

Samstag, 19. Juni 2010, 21:28

Hilfe mit Select in Shellscript

Hallo


Gibt es eine Möglichkeit die Auswahl eines Select Menu Einreihig darzustellen?

also statt:

1) Auswahl 1 2) Auswahl 2
3) Auswahl 3 3) Auswahl 3
#?

möchte ich es gern so haben:

1) Auswahl 1
2) Auswahl 2
3) Auswahl 3
4) Auswahl 4
#?

Vielen Dank im voraus.

Gruß Chris
<!-- m --><a class="postlink" href="http://www.clan-tbm.de">http://www.clan-tbm.de</a><!-- m -->

DeaD_EyE

Administrator

Beiträge: 3 980

Wohnort: Hagen

Beruf: Mechatroniker (didaktische Systeme)

Rootserver vorhanden: Nein

  • Nachricht senden

2

Sonntag, 20. Juni 2010, 01:08

Re: Hilfe mit Select in Shellscript

Leider unterstützt select nur diese eine Ausgabe der Menüs oder die Funktion ist nicht dokumentiert.

Da ich gerade so in Scripting-Laune bin.
Hier ein Beispielscript, dass mit trap, regular-expressions, Funktionen und einer while schleife arbeitet.

Quellcode

1
<span class="syntaxdefault"></span><span class="syntaxcomment">#!/bin/bash<br /></span><span class="syntaxdefault">function init </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">trap </span><span class="syntaxstring">"echo "Ne, soo nicht mein Freund. Auswahl treffen oder Konsole verlassen""</span><span class="syntaxdefault"> SIGINT SIGTERM<br /></span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault">function menu_show </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">        echo </span><span class="syntaxstring">"1) Menüpunkt1"<br /></span><span class="syntaxdefault">        echo </span><span class="syntaxstring">"2) Menüpunkt2"<br /></span><span class="syntaxdefault">        echo </span><span class="syntaxstring">"3) Menüpunkt3"<br /></span><span class="syntaxdefault">        echo </span><span class="syntaxstring">"4) Menüpunkt4"<br /></span><span class="syntaxdefault">        echo </span><span class="syntaxstring">"5) Menüpunkt5"<br /></span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault">function menu_input </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">        </span><span class="syntaxcomment">#solange lesen, wie read = true, also immer<br /></span><span class="syntaxdefault">        while read option</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> do<br />                </span><span class="syntaxkeyword">[[</span><span class="syntaxdefault"> </span><span class="syntaxstring">"$option"</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">-</span><span class="syntaxdefault">gt 6 </span><span class="syntaxkeyword">||</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">!</span><span class="syntaxdefault"> </span><span class="syntaxstring">"$option"</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">*[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">-</span><span class="syntaxdefault">9</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">]]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">||</span><span class="syntaxdefault"> break<br />                </span><span class="syntaxcomment"># Wenn Auswahl größer als 6 oder keine Zahl verwendet wird, dann weiter machen<br /></span><span class="syntaxdefault">                </span><span class="syntaxcomment"># Ansonsten While-Schleife verlassen<br /></span><span class="syntaxdefault">                </span><span class="syntaxcomment"># Die Variable option ist auch außerhalb der Schleife und Funktion abrufbar<br /></span><span class="syntaxdefault">                echo </span><span class="syntaxkeyword">-</span><span class="syntaxdefault">e </span><span class="syntaxstring">"Falsche Wahl: $option\nBitte den richtigen Menüpunkt $wählen"<br /></span><span class="syntaxdefault">                sleep 2<br />                clear<br />                </span><span class="syntaxcomment"># menu nochmal anzeigen<br /></span><span class="syntaxdefault">                menu_show<br />        done<br /></span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault">init<br />menu_show<br />menu_input<br /><br />echo </span><span class="syntaxstring">"Du hast Menüpunkt $option gewählt"</span><span class="syntaxdefault"> </span>

3

Sonntag, 20. Juni 2010, 09:51

Re: Hilfe mit Select in Shellscript

Hallo

Vielen Dank für die schnelle Hilfe.


Hab noch ein paar generelle Fragen, da mir auffällt, dass ich einige Dinge leicht anders mache in meinen Scripten.

Funktion verwende ich so:

function function_name () {
Befehle.....
}

Was ist der Unterschied wenn die () weggelassen werden?

Und vorm aufrufen der Funktionen kommt init, was bewirkt das genau, da ich Fuktionen immer nur mit funktion_name aufrufe, gegebenenfalls noch vorher einlese falls die Funktion in einer externen Datei liegt.

***edit*** hab die Funktion mit dem Namen init übersehen am Anfang big-lol
Aber was diese Funktion bewirkt ist mir trotzdem unklar keinahn

Achja ein kleiner Fehler ist glaub drin, falls ich mich nicht irre, müsste es bei 5 Menüpunkten "$option" -gt 5 heissen xD


P.S Hast du sowas immer ausm stehgreif oder schlägst das nach, ausm stehgreif wär ja unheimlich xD


Gruß Psy
<!-- m --><a class="postlink" href="http://www.clan-tbm.de">http://www.clan-tbm.de</a><!-- m -->

DeaD_EyE

Administrator

Beiträge: 3 980

Wohnort: Hagen

Beruf: Mechatroniker (didaktische Systeme)

Rootserver vorhanden: Nein

  • Nachricht senden

4

Sonntag, 20. Juni 2010, 11:21

Re: Hilfe mit Select in Shellscript

Zitat von »"thx2k"«


Funktion verwende ich so:

function function_name () {
Befehle.....
}

Was ist der Unterschied wenn die () weggelassen werden?

Die runden Klammern kann man weglassen, wenn man will.
Eigentlich müssten funktionen sich auch so einleiten lasen

funtionsname ()
{
foo
}

Ist für faule Leute. Ich habe mir angewöhnt immer function davorzuschreiben. Das macht den Code übersichtlicher.

Zitat von »"thx2k"«


Und vorm aufrufen der Funktionen kommt init, was bewirkt das genau, da ich Fuktionen immer nur mit funktion_name aufrufe, gegebenenfalls noch vorher einlese falls die Funktion in einer externen Datei liegt.

***edit*** hab die Funktion mit dem Namen init übersehen am Anfang big-lol
Aber was diese Funktion bewirkt ist mir trotzdem unklar keinahn

Die Funktion init verwendet man um an anfang irgendwelche Variablen festzulegen, Tests zu machen usw.
Ist eine angewohnheit. Wenn du öfters mit Shell-Skripten arbeitest, wirst du das in dem ein oder anderen Scripten sehen.


Zitat von »"thx2k"«


Achja ein kleiner Fehler ist glaub drin, falls ich mich nicht irre, müsste es bei 5 Menüpunkten "$option" -gt 5 heissen xD

Jo, stimmt. Es gibt 5 Menüpunkte. Also müsste es heißen größer oder gleich 6, dann fortfahren. Also nicht -gt sondern -ge

Quellcode

1
2
 INTEGER1 -ge INTEGER2
              INTEGER1 is greater than or equal to INTEGER2

Zitat von »"thx2k"«


P.S Hast du sowas immer ausm stehgreif oder schlägst das nach, ausm stehgreif wär ja unheimlich xD

Die meisten Befehle kenne ich, die ich so eingesetzt habe. Manchmal muss ich auch nachschlagen. Z.B. wenn ich mal länger nichts mehr gemacht habe oder Befehle, die ich selten verwende. Meist hilft aber auch die Konsole. man, info, --help sind die besten Helfer. Der Befehl Trap kann Signale abfangen. So kannst du z.B. verhindern, dass ein User versucht mit STRG+C das Script zu beenden. Damit kannst du dann z.B. auch eine Funktion aufrufen, die dann irgendwas vorbereitet, wie z.B. temporäre Dateien löscht und dann das Programm sauber mit exit beendet und ggf. noch einen Rückgabewert mit Return liefert. Ist dann besonders interessant, wenn du das Script in einem anderen Script aufrufen willst und damit verhindern willst, dass das Parant-Script irgendwelche Sachen ausführt, obwohl das Child-Script abgebrochen wurde.

Ganz sinvoll ist noch der Befehl source. Damit kannst du Textdateien erstellen (ASCII, LF), die dann mittels source einfach in den Quellcode des Shellscriptes geladen werden. Das verwende ich z.B. in meinem Start/Stop/Restart-Script mit Konfigurationsdateien: http://sourceserver.info/wiki/installation/dedicated_server_standalone/script">wiki/installation/dedicated_server_standalone/script<

In den Konfigurationsdateien werden einfach irgendwelche Variablen gesetzt.

DeaD_EyE

Administrator

Beiträge: 3 980

Wohnort: Hagen

Beruf: Mechatroniker (didaktische Systeme)

Rootserver vorhanden: Nein

  • Nachricht senden

5

Sonntag, 20. Juni 2010, 21:28

Re: Hilfe mit Select in Shellscript

http://freshmeat.net/projects/advancedba…lease_id=159084

Sehr zu empfehlen. Hier wird wirklich alles vermittelt.