Returncode von aufgerufenem Programm abfragen

F

fencingline

Mitglied
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
 
Zuletzt bearbeitet:
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...
 
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

Was kommt denn wenn man es ausfuehrt?

Muss das nicht
Code:
mysqldump -u root -p Passwort -h localhost --all-databases > backup.sql
heissen?
 
@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 ...
 
Zuletzt bearbeitet:
Ich bekomme immer folgenden Fehler:
Code:
syntax error: unexpected end of file
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
 
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
 
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
 
Zuletzt bearbeitet:
Code:
if [ $? -ne 0 ]
then
...
fi
Siehst du den Unterschied?

Wolfgang
 
Blank zw. [ und $? sowie zw. 0 und ]

Oh Mann ...

ich teste ...
 

Ähnliche Themen

rsnapshot und ein Rechteproblem?

Datenbankconnect prüfen (Return-Code)

Crontab Tägliches Backup

Zurück
Oben