PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fehlerroutine in Script einbauen



16-09-2000, 09:36
Hallo,
ich habe noch ein anderes Script erstellt, mit dem Dateien, die User in einem Verzeichnis erstellen, automatisch in PDF-Dateien umgewandelt werden.
Dabei kommt es vor, daß die User nicht wie notwendig mit einem postscriptfähigem Druckertreiber, die Datei erzeugen sondern mit einem anderen Druckertreiber. Außerdem sind manchmal die erzeugten Dateien buggy.
Ich möchte nun in untenstehendem Script die Fehlerausgabe von "ps2pdf" abfangen und dem Benutzer eine sinnvolle Mitteilung machen.
Wie geht das?
mein Script:
****************
#!/bin/bash

# Wechseln ins Einlauf-Verzeichnis
cd /nw-dienste/pool/organisation/pdf-erstellung/in

# Suchen nach der ersten PDF-Datei
# uebersetzen der Dateien und Ausgabe in Ausgabe-Verzeichnis
# Definieren einer Variablen durch Abfrage des Verzeichnisses
set $(ls -a)
# ueberspringen der ersten beiden Eintraege (. und ..)
# da Schleife sonst immer durchlaufen wird
shift 2
# alle Eintraege uebersetzen und ins Ausgabeverzeichnis
# kopieren
for i
do
# uebersetzen der postscrpt-Datei in PDF
/usr/bin/ps2pdf $i ../out/$i.pdf
# loeschen der Datei
rm $i
date>>/root/batches/pdf-erstellung/pdf.ausgabe
mail -s "pdf-erstellung" w.ginzky@domaene.de</root/batches/pdf-erstellung/pdf.txt
done
************
Danke fuer Eure Hilfe,
Werner

thommy
18-09-2000, 08:59
/usr/bin/ps2pdf $i ../out/$i.pdf 2&gt;/dev/null &#0124; &#0124; echo "Fehler..."

Thomas

19-09-2000, 08:46
Hallo Thomas,
ich habe etwas rumprobiert aber bin leider nicht weitergekommen.
Das Kommando "ps2pdf" erzeugt einen Fehler, wenn man mit einem nichtpostscriptfähigen Druckertreiber die Druckdatei erzeugt hat, mit der "ps2pdf" das pdf erzeugen soll.
Ich möchte nun gerne mit z.B.
for i
ps2pdf $i -d /verzeichnis
if Fehler then
...
else kein Fehler then

fi
done

die (Fehler)ausgabe des Befehls abfangen und entsprechend darauf reagieren.
Kannst Du oder auch sonst jemand dabei helfen?
Vielen Dank,
Werner

thommy
19-09-2000, 09:04
In der Bashvariablen $? steht der Rückgabewert des letzten Kommandos. Er ist 0, wenn das Kommando sauber durchlief und &gt;0 sonst. Also testet Du in der if-Bedingung, ob $? verschieden 0 ist:

<code>if [ "$?" -ne "0" ]; then ...</code>

Thomas