Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Variablen in Bash weiterverarbeiten

  1. #1
    Das_Gnu
    Gast

    Variablen in Bash weiterverarbeiten

    Ich bin gerade dabei, eine PHP-basierte Support-Oberfläche zu erstellen, die aus CVS die jeweils aktuellste Download-Version eines Programmes holt.
    Dazu gebe ich auf Console zum Beispiel die Befehle
    Code:
    cd /web/httpd/htdocs/support/download
    cvs -d /usr/cvs export -D 2002-10-26 Modulname
    cd /web/httpd/htdocs/support/download/Modulname
    tar cfz Modulname.tgz *
    ein.
    "2002-10-29" ist das aktuelle Tagesdatum, damit die neueste Version geladen wird,
    "Modulname" ist der Name des Projektes.

    Die exec() -, system() -, passthru - Funktionen funktionieren in diesem Fall (zumindest auf unserem Server) nicht mit dem cvs-Kommando, da sie nicht in die Unterverzeichnisse abtauchen - habe alles mögliche probiert.
    Dagegen funktioniert zum Beispiel der Aufruf einer BASH-Datei mit obengenanntem Inhalt:
    PHP-Code:
    exec("export.sh"
    hervorragend.
    Jedoch sind "Modulname" und Datum (Schalter -D) Variablen, die der Besucher wählen soll. So ist statt
    Code:
    -D <datum>
    zum Beispiel auch der Schalter
    Code:
    -r <versionsnummer>
    möglich.

    Das PHP ist kein Problem für mich, aber BASH.

    Wie kann ich nun zum Beispiel die aus PHP übergebenen Parameter in dem BASH-Script auswerten, wenn ich die Variablen aus dem PHP-Script etwa in der Form übergebe
    PHP-Code:
    exec("export.sh --date=$date --modul=$modulname"
    ?
    Leider habe ich noch nie ein Bash-Script selber konfiguriert oder geschrieben.

  2. #2
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Übergibt die beiden Parameter einfach direkt, d.h ohne --option
    Im Bashcript sind die Parameter dann $1 (der erste Parameter) und $2 (der zweite Parameter)

    Code:
    #!/bin/bash
    echo Datum: $1
    echo Modul: $2
    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  3. #3
    Registrierter Benutzer
    Registriert seit
    30.12.2001
    Beiträge
    444
    Es soll sogar irgendwie ein Modul GetOpts für Shellscripte vorhanden sein, finde den Thread aber gerade nicht. Die von anda_skoa erwähnte Methode geht natürlich, aber Standardkonforme Optionen sehen schöner aus und sind dazu noch selbst erklärend. Hier mein Codeschnipsel zu Long Options.

    Vorsicht: "="-Zeichen im Optionswert produzieren Fehler.
    Code:
    #!/bin/bash
               # alle Argumente überprüfen
    for PAR in $@ ; do
               # Prüfen ob die ersten beiden Zeichen Minuszeichen sind
            if [ $(echo $PAR| cut -c1-2) == "--" ] 
            then
               # Den Namen der Long Option extrahieren
                    LONG_OPT=$(echo $PAR | cut -c3- | cut -d= -f1)
               # Den Inhalt des Optionswertes extrahieren
                    OPT_VAL=$(echo $PAR | cut -d= -f2)
               # Prüfen ob die entsprechende Option gesetzt wurde und interne Variable versorgen
                    [ $LONG_OPT == "date"   ] &&  DATE="$OPT_VAL"
                    [ $LONG_OPT == "modul"  ] && MODUL="$OPT_VAL"
            fi
    done

  4. #4
    Das_Gnu
    Gast
    Vielen Dank!!!

    Ich werde beide Varianten probieren.
    Sobald ich alles fertig habe, setze ich es hier rein.

    Beste Grüße
    Das Gnu

Lesezeichen

Berechtigungen

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