PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Exit Value aus aufgerufenem Script



skybluenova
18-06-2007, 12:18
Servus allerseits,

leider habe ich trotz Suche und Probieren keine Loesung zu folgendem, einfachen Problem:

Ich rufe in Script 1, nennen wir es rsyncScript.sh, einen rsync-Befehl auf.

In Script 2, nennen wir es executeRsync.sh, rufe ich Script 1 auf ... leider werden die Error Codes nicht richtig durchgereicht ...ich habe folgendes Schema:

Script 1:


#!/bin/bash
export RSYNC_PASSWORD=test
cd /mnt/dir
for x in `ls -1 /mnt/dir`
do
pwd
rsync -n --whole-file --times --inplace -i -rvv --stats $x rsync://test@test/dir
done


Script 2:


#!/bin/bash

echo -e '\E[5;30;43mServer Backup Running ...' ; tput sgr0 #
echo "LOGFILE: srvlog_20"$(date +%y%m%d)"_"$FNUM"_"$1""

if [ `./srvroff.sh 2>&1 > /root/LOGS/srvlog_20"$(date +%y%m%d)"_"$FNUM"_"$1"` ]; then
echo -e '\E[30;42mDONE!'; tput sgr0
echo ""
echo "Copy and Paste:"
echo "cat LOGS/srvlog_20"$(date +%y%m%d)"_"$FNUM"_"$1" | grep -v 'f+++++++++'"
echo ""
else echo -e '\E[5;31;47mERROR'; tput sgr0
fi


Leider erscheint teilweise ein Error, wenn rsync nur einfach nichts mehr synchronisiert hat ... der Error Code ist aber in der rsync-Doku nicht enthalten (scheinbar 1?), zum anderen wuerde ich den Error gerne auf der Kommandozeile anzeigen - nur wie?

Vielleicht weiss jemand Rat?

mamue
18-06-2007, 13:00
Wie wäre es mit Abfrage des "exit-Status"?


exitStatus=$?
if test $exitStatus -ne 0
then echo "Fehler $exitStatus"
else
;;
fi


HTH,
mamue

jan61
18-06-2007, 22:11
Wenn Du Exit-Codes haben willst, dann musst Du sie erstens abfragen und zweitens auch durchreichen. Wenn in Deinem Script1 kein exit $rc drin steht, dann kommt das immer mit 0 zurück. Und in $rc solltest Du den Exitcode des Programms speichern, dessen Ergebnis Du haben willst.

rsync ...
rc=$?
...
exit $rcJan