Returncode von aufgerufenem Programm abfragen

Diskutiere Returncode von aufgerufenem Programm abfragen im Shell-Skripte Forum im Bereich Programmieren unter Linux/Unix; Hallo zusammen, ich möchte irgendwie so etwas machen: RET="mysqldump -uroot -pPasswort -hlocalhost --all-databases > backup.sql" if $RET=0 {...

  1. #1 fencingline, 24.02.2008
    Zuletzt bearbeitet: 24.02.2008
    fencingline

    fencingline Mitglied

    Dabei seit:
    21.04.2007
    Beiträge:
    37
    Zustimmungen:
    0
    Hallo zusammen,

    ich möchte irgendwie so etwas machen:

    Code:
    RET="mysqldump -uroot -pPasswort -hlocalhost --all-databases > backup.sql"
    
    if $RET=0
    {
    echo "Backup war erfolgreich"
    }
    else
    {
    echo "Backup war nicht erfolgreich"
    }
    Aber so einfach geht das nicht. Geht das überhaupt?

    Hintergrund:
    Ich habe neulich das MySQL-Passwort geändert und es erst sehr spät bemerkt, so dass ich keine Backups mehr hatte ...

    VG

    FCL
     
  2. #2 Gott_in_schwarz, 24.02.2008
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    so wie du das gemacht hast, gehts nicht.
    einfach den befehl ausführen und dann
    Code:
    return_code="$?"
    machen.
    in $? steckt immer der return code des zuletzt ausgeführten programmes.

    btw: wenn du den returncode nur bei einer einzigen if-abfrage brauchst, brauchst du ihn natürlich nicht in einer extra variable abzuspeichern...
     
  3. Shorti

    Shorti Routinier

    Dabei seit:
    08.04.2007
    Beiträge:
    271
    Zustimmungen:
    0
    Was kommt denn wenn man es ausfuehrt?

    Muss das nicht
    Code:
    mysqldump -u root -p Passwort -h localhost --all-databases > backup.sql
    heissen?
     
  4. #4 fencingline, 24.02.2008
    Zuletzt bearbeitet: 24.02.2008
    fencingline

    fencingline Mitglied

    Dabei seit:
    21.04.2007
    Beiträge:
    37
    Zustimmungen:
    0
    @Gott_in_schwarz:
    Vielen Dank, das ist es! Bei falschem Passwort kommt Return-Code 2. Wenn alles gut geht, Return-Code 0. Ich kann quasi bei Return-Code != 0 einen Fehler melden. Danke dir! :-)

    @Shorti:
    Das mysqldump Script läuft so schon seit Monaten/Jahren. Es dürfen keine Blanks dazwischen sein.
    .
    .
    .
    EDIT (autom. Beitragszusammenführung) :
    .

    Hallo Leute,

    ich krieg nen Wolf ...

    Warum funktioniert das nicht?

    Code:
    mysqldump -uroot -pfalschesPasswort -hlocalhost --all-databases > db_backup.sql
    
    if $? != 0
    {
      echo "$(date '+%Y-%m-%d %H:%M:%S') [ERROR] : Beim Backup der Datenbanken ist ein Fehler aufgetreten, das Script wird abgebrochen."
     # exit
    }
    Nicht? Ich bekomme immer folgenden Fehler:
    Code:
    syntax error: unexpected end of file
    Ratlos ...
     
  5. #5 Gott_in_schwarz, 24.02.2008
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    was verstehst du denn an "syntax error" nicht?

    so wie dein beispielcode aussieht hast du noch nie in deinem leben die syntax von if-abfragen in der bash nachgeschlagen und wunderst dich nun, dass es nicht funktioniert...

    hier die antwort auf dein problem:
    lösung
     
  6. #6 Wolfgang, 24.02.2008
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Wenn du die Syntax für If gelesen hast (solltest du unbedingt tun), dann kannst du es auch mal mit der Kurzform versuchen.

    Code:
    mysqldump -u root -p Passwort -h localhost --all-databases > backup.sql || echo "Error on SQLdump";
    
    ;)
    Wolfgang
     
  7. #7 fencingline, 24.02.2008
    Zuletzt bearbeitet: 24.02.2008
    fencingline

    fencingline Mitglied

    Dabei seit:
    21.04.2007
    Beiträge:
    37
    Zustimmungen:
    0
    Sorry für mein Nichtwissen Gott_in_schwarz und Wolfgang. Ich hatte die C-Syntax genommen, natürlich kann die unter Bash nicht funktionieren. :(

    Ich habe mich so weit eingelesen und nun schon den nächsten Fehler:
    Code:
    if [$? -ne 0]
    then
      echo "$(date '+%Y-%m-%d %H:%M:%S') [ERROR] : Beim Backup der Datenbanken ist ein Fehler aufgetreten, das Script wird abgebrochen."
     # exit
    fi
    [2: command not found
     
  8. #8 Wolfgang, 24.02.2008
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Code:
    if [ $? -ne 0 ]
    then
    ...
    fi
    
    Siehst du den Unterschied?

    Wolfgang
     
  9. #9 fencingline, 24.02.2008
    fencingline

    fencingline Mitglied

    Dabei seit:
    21.04.2007
    Beiträge:
    37
    Zustimmungen:
    0
    Blank zw. [ und $? sowie zw. 0 und ]

    Oh Mann ...

    ich teste ...
     
Thema: Returncode von aufgerufenem Programm abfragen
Besucher kamen mit folgenden Suchen
  1. bash returncode abfragen

    ,
  2. shell script returncode abfragen

    ,
  3. linux return code abfragen

    ,
  4. bash errorlevel auswerten,
  5. returncode auslesen,
  6. unix returnwert abfragen
Die Seite wird geladen...

Returncode von aufgerufenem Programm abfragen - Ähnliche Themen

  1. ssh unter nohup liefert returncode 255

    ssh unter nohup liefert returncode 255: Hallo Gemeinde, ich habe ein ziemlich verzwicktes Problem, dass ich - auch mit schon einigem Support - nicht gelöst bekomme. In meinem Shell...
  2. Returncode eines Antjobs auswerten

    Returncode eines Antjobs auswerten: Hallo zusammen, ich bin neu hier und habe noch nicht so viel Erfahrung bei der Shell Script Programmierung. Nun habe ich folgendes Problem....
  3. If abfrage - welcher returncode ?

    If abfrage - welcher returncode ?: Hallo, ich bin totaler Neuling, aber es ist wichtig. In der Console gebe ich folgenden Befehl ein. srvgsx:~ # vmware-cmd...
  4. returncode 127

    returncode 127: hallo zusammen ich habe ein script gemacht welches den uvscan (on demande anti virus scanner) von mcafee mit einigen optionen anwirft, danach...