Anzeige:
Ergebnis 1 bis 11 von 11

Thema: Frage zu meinem 1. Bashscript...

  1. #1
    Registrierter Benutzer
    Registriert seit
    08.01.2004
    Beiträge
    75

    Frage zu meinem 1. Bashscript...

    Moin!

    Von vorne weg: Voller Newbie

    Was muss ich machen, damit das Script funktioniert?

    Script:
    -------------
    echo $x
    -------------


    Starten des Scripts:
    -------------
    ./script -x=Hallo
    -------------

    Wie läuft das in der Shellprogrammierung ab?
    was muss ich machen damit das so in etwas funzt?

    THX im voraus,

    d@tenmauöwurf

  2. #2
    Registrierter Benutzer Avatar von phate
    Registriert seit
    14.02.2003
    Beiträge
    149
    Hi d@tenmaulwurf,

    willkommen auf mrunix.de.
    Wie läuft das in der Shellprogrammierung ab?
    was muss ich machen damit das so in etwas funzt?
    Damit sowas funktioniert sollte man sich - wie bei allen Dingen - mit den Grundlagen auseinandersetzen. Ein paar Anlaufstellen finden sich in der Signatur von fork. Schaue Dir dazu seinen letzten Beitrag unter http://www.mrunix.de/forums/showthre...316#post150316.

    Zu Deinem konkreten Problem: Was Du suchst ist eine Möglichkeit zur Parameterübergabe in ein Bash-Skript.
    Dazu kannst Du getopts verwenden. Unter den o.g. Anlaufstellen sollte sich dazu was finden lassen.

  3. #3
    Registrierter Benutzer
    Registriert seit
    08.01.2004
    Beiträge
    75
    THX, abba das ist zu hoch für mich
    Kannst du mir evtl. einen konkreten Lösungsansatz geben?
    Oder geht das überhaupt so wie ich mir das vorstelle?

    PS: In PHP geht das

  4. #4
    Registrierter Benutzer Avatar von phate
    Registriert seit
    14.02.2003
    Beiträge
    149
    Klar geht das. Beweis nachfolgend:
    Code:
    #!/bin/bash
    
    while getopts x: option;do
        case $option in
            x)  x=$OPTARG
                ;;
        esac
    done
    Aufgerufen wird das Ganze mit
    Code:
    ./skript -x Parameter
    Der übergebene Parameter befindet sich nach Abarbeitung des obigen Code-Fragments in der Variable x des Skripts.


    Um das ganze ein wenig verständlicher zu machen eine Erklärung zur Arbeitsweise.
    Code:
    while getopts x: option;do
    In diesem Schleifenkonstrukt veranlasst man das Auswerten der Kommandozeilenparameter. Das Kernstück dabei ist 'getopts <liste>' variable'. In Liste gibt man die Buchstaben der Skript-Parameter an, welche zu erwarten sind. Dabei wird zwischen Optionen und Parameter-behafteten Optionen unterschieden. Für einfache Optionen (z.B. -x ohne Parameter) landet der Buchstabe der Option in der Liste, wird ein mit der Option verbundener Parameter erwartet dann muss man dem Buchstaben zustätzlich einen Doppelpunkt anfügen. getopts wertet sodann mit jedem Durchlauf der while-Schleife eine übergebene Skript-Option aus und weißt die jeweils aufgefunde Option der Variable $option zu. Sind keine weiteren Optionen mehr vorhanden, bricht die while-Schleife ab.
    Code:
    case $option in
            x)  x=$OPTARG
                ;;
    esac
    Innerhalb der while-Schleife wird der in der Variable $option enthaltene Buchstabe mit einem case-Konstrukt überprüft. Das ist das Bash-Pendant der PHP-switch-Anweisung. Wird in $option also der Buchstabe x vorgefunden, wird die Anweisung x=$OPTARG ausgeführt.
    In $OPTARG befindet sich der mit einer Option verbundene Parameter, insofern in der Listen-Deklaration von getopts ein Doppelpunkt nach dem entsprechenden Options-Buchstaben steht. Somit wird ein mit der Option -x an das Skript übergebener Parameter an die Variable $x übergeben.


    Alle Klarheiten beseitigt?

    Schau Dir wie gesagt mal die Links von forks Signatur an, da finden sich die entsprechenden Grundlagen.

  5. #5
    Registrierter Benutzer
    Registriert seit
    30.12.2001
    Beiträge
    444
    Ist das 'ne Hausaufgabe? Von alleine kommt man als Neuling nämlich nicht drauf so etwas zu schreiben, bzw. mit so etwas so anzufangen.

    aber auf einfache Weise gehts auch mit Variablen:

    meinprogramm.sh:
    Code:
    #!/bin/bash
    echo $variable
    Aufruf:
    Code:
    variable=meinWert ./meinprogramm.sh
    Geändert von fork (08-01-2004 um 18:32 Uhr)

  6. #6
    Registrierter Benutzer
    Registriert seit
    08.01.2004
    Beiträge
    75
    Oh, THX! Iss genau das was ich suche...

    Wie ich darauf komme?
    Habe n CD-Wechsler den ich mit dem programm eject ansprechen muss.

    Das läuft dann immer so ab:

    umount /mnt/cdwechsler
    eject -c [1-6]
    mount /mnt/cdwechsler
    cd /mnt/cdwechsler

    Deshalb:

    cd=[1-6] ./script

    Iss einfach einfacher

    Nochmal THX an alle die mir geholfen haben, besonders fork,

    d@tenmaulwurf

  7. #7
    Registrierter Benutzer
    Registriert seit
    08.01.2004
    Beiträge
    75
    Könnte ich dem ganzen jetzt noch ne grafische Oberfläche geben?
    Was eignet sich dafür am besten?
    Ruby, Python...

    Es soll ganz einfach sein, in der Art:
    onCLickaufEinenButton:mount /das/und/das

  8. #8
    Registrierter Benutzer Avatar von mwanaheri
    Registriert seit
    28.10.2003
    Ort
    Bayreuth
    Beiträge
    569
    Geschmackssache. Ich bevorzuge ruby, aber du kannst es machen mit was du willst. Letztlich ruft das ja nur das script auf, da brauchst du nicht mehr viele Zeilen für die Graphische Oberfläche.

  9. #9
    Registrierter Benutzer
    Registriert seit
    30.12.2001
    Beiträge
    444
    KDE -> Desktop -> Rechtsklick -> Neues Gerät ?

  10. #10
    Registrierter Benutzer
    Registriert seit
    08.01.2004
    Beiträge
    75
    Habe mich mal erkndigt mit Ruby und co...
    Aber wie rufe ich aus Ruby oder Python ein Bash-Script auf?
    Also wie müsste der Code aussehen;
    wenn ich auf einen Button klicke wird das Script xyz ausgeführt.

    THX nochmal (und für eure Geduld mit mir ),

    d@tenmaulwurf

  11. #11
    Registrierter Benutzer Avatar von mwanaheri
    Registriert seit
    28.10.2003
    Ort
    Bayreuth
    Beiträge
    569
    bei ruby:
    Code:
    system("befehl")
    Du kannst also in einem Ruby-Programm mit

    ergebnis = system("ls")
    print ergebnis

    ruby anweisen, den Befehl ls auszuführen, das Ergebnis in der Variablen ergebnis zu speichern und dann auszudrucken.

    Wenn du das graphische Toolkit FXruby benutzt, wäre das etwa so:

    require 'fox'
    include Fox
    $programm = FXApp.new('Starter',"you")
    $hauptfenster = FXMainWindow.new($programm,"starter")
    myButton = FXButton.new($hauptfenster,"start")

    myButton.connect(SEL_COMMAND){system("dein Script")}

    $programm.create
    $hauptfenster.show
    $programm.run

Lesezeichen

Berechtigungen

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