Anzeige:
Ergebnis 1 bis 13 von 13

Thema: shellscript

  1. #1
    Registrierter Benutzer
    Registriert seit
    22.05.2002
    Beiträge
    43

    shellscript

    hi,

    ich habe noch eine Frage:

    wenn ich in einem Shellscript zB ein mkdir mache, wird der Erfolg/Mißerfolg dieser Aktion als Wert in einer Variable vorgehalten? Kann ich danach eine If Abfrage machen, ob der Befehl erfolgreich ausgeführt wurde? Wenn ja, wie heißt diese Variable und welchen Wert kann sie enthalten?

    Gruß und danke
    otelo

  2. #2
    Registrierter Benutzer
    Registriert seit
    13.07.2000
    Beiträge
    32
    z.B.
    Code:
    [Befehl]
    if test $? = 0; then
      [Befehle];
    fi;
    oder
    Code:
    if [Befehl]; then
      [Befehle];
    fi;
    Eric

  3. #3
    Registrierter Benutzer
    Registriert seit
    22.05.2002
    Beiträge
    43
    sorry eric,

    ich hab da noch ein kleines verständnisproblem (kenn mich in der shellprogrammierung nicht so aus)

    wenn ich den mkdir -befehl abragen wollte, dann müsste ich folgendes schreiben?

    mkdir test

    if test $? = 0; then
    echo "mkdir fehlgeschlagen";
    fi

    richtig?

    Gruß
    otelo

  4. #4
    Registrierter Benutzer
    Registriert seit
    13.07.2000
    Beiträge
    32
    jup

    oder eben direkt:
    Code:
    if ! mkdir test; then
      echo "mkdir fehlgeschlagen";
    fi
    Eric
    Geändert von 3qualizer (30-01-2003 um 19:37 Uhr)

  5. #5
    Registrierter Benutzer
    Registriert seit
    16.09.2002
    Beiträge
    73
    Noch einfacher:

    if mkdir test ; then
    echo fehlgeschlagen
    fi


    hehe, da ist mir wohl einer zuvor gekommen

  6. #6
    Registrierter Benutzer
    Registriert seit
    22.05.2002
    Beiträge
    43
    cool danke :-) ich werde es gleich ausprobieren.

    darf ich noch eine Frage stellen? ist auch wirklich die letzte für heute


    wenn ich jetzt bei meinen ganzen if abfragen jeweils einen Status1..n mit Wert 0 für error und 1 für ok setze wie heíßt dann in einer neuen if Abfrage der logische Operator für ein "oder" ?

    mit

    if stat1=0 or stat2=0 or ... ; then

    geht es nicht.

    Danke
    Gruß
    otelo

  7. #7
    Registrierter Benutzer
    Registriert seit
    13.07.2000
    Beiträge
    32
    Code:
    if test stat1 = 0 || test stat2 = 0; then
      ...;
    fi
    Eric

  8. #8
    Registrierter Benutzer
    Registriert seit
    22.05.2002
    Beiträge
    43
    thx Eric :-]]

    Schönen Abend noch
    Gruß
    otelo

  9. #9
    Registrierter Benutzer
    Registriert seit
    30.01.2003
    Beiträge
    5
    du musst dir nur eines merken, 0 ist true bei UNIX und alles andere ist false;
    bei C ist es genau anders herum
    habe auch ein schönes Skript zur SHELL-Prog
    einfach melden...
    semper fidelis ...

  10. #10
    Registrierter Benutzer
    Registriert seit
    22.05.2002
    Beiträge
    43
    nun hab ich gestern abend rumgestestet und bis auf eine Abfrage funktionieren sie mittlerweile auch alle.

    bei dieser hier gibt vergibt er für stat10 immer 0...

    if /etc/rc.d/init.d/httpd start; then
    stat10="1";
    else stat10="0";
    fi

    warum? ist an der was falsch?

    Gruß
    otelo

    PS: @anmate eine Skript zur Shellprogrammierung wär schon was feines

  11. #11
    Registrierter Benutzer
    Registriert seit
    12.07.2002
    Beiträge
    27
    Hallo,

    Ich würde es so lösen(gibt bestimmt bessere Lösungen, aber es funzt)

    /etc/rc.d/init.d/httpd start
    if [ "$?" = "0" ];then
    stat10="1"
    else stat10="0";
    fi

    Wobei eine 0 in $? bedeutet, daß alles in Ordnung ist.
    evtl. die stat10 umdrehen.

    /etc/rc.d/init.d/httpd start
    if [ "$?" = "0" ];then
    stat10="0"
    else stat10="1";
    fi


    hoffe konnte helfen

    In diesem Sinne
    Ihr und Euer

    buffer_7
    665 the neighbour of the beast

    RTFM? Why should I read the fu**ing manual - I know how to f**k!

  12. #12
    Registrierter Benutzer
    Registriert seit
    13.07.2000
    Beiträge
    32
    bei dieser hier gibt vergibt er für stat10 immer 0...

    if /etc/rc.d/init.d/httpd start; then
    stat10="1";
    else stat10="0";
    fi
    Ist der Start denn erfolgreich gewesen? Was kommt hierbei:
    Code:
    /etc/rc.d/init.d/httpd start;
    echo $?;
    @buffer_7
    /etc/rc.d/init.d/httpd start
    if [ "$?" = "0" ];then
    stat10="0"
    else stat10="1";
    fi
    Das wäre also etwa sowas
    Code:
    /etc/rc.d/init.d/httpd start;
    stat10=$?;
    Eric

  13. #13
    Registrierter Benutzer
    Registriert seit
    22.05.2002
    Beiträge
    43
    also, wenn ich das so mache wie ihr beiden mir das vorgeschlagen habe, klappt es leider auch nicht. nach einem start/stop/restart steht in $? bei mir immer 255 egal ob es geklappt hat. müßte der wert nicht zumindest mal variieren bei ok/nichtok? und wieso steht da 255 und nicht 0?

    ich habe auf der Maschine noch RH6.2

    Gruß
    otelo

Lesezeichen

Berechtigungen

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