* Oliver Wiemer schrieb am 20.Mär.2003:
Hallo Leute,
ich möchte in einem Verzeichniss ps in pdf wandeln. Leider sind meine shell Kenntnisse etwas dürftig. Mein Ansatz ist
#!/bin/bash GO=1; while [ $GO=0 ]
while true wäre einfacher.
do for each in *.ps; do ps2pdf $each $each.pdf;
Besser Du faßt $each und auch $each.pdf in ".." ein, dann hast Du keine Probleme bei Leerzeichen im Dateinamen. Bist Du Dir sicher, daß die fertige Datei datei.ps.pdf heißen soll, und nicht etwa nur datei.pdf, wenn doch, dann empfehle ich basename. ps2pdf $each `basename $each .ps`.pdf Wichtig hierbei, daß es zwichen dem abschließenden ` und dem . kein Leerzeichen oder so gibt. Du könntest hier auch den . vor ps und pdf weglassen. Eigentlich auch das p. ;)
done; for each in *.ps; do rm $each;
Hier löschst Du auch dann, wenn die erste Schleife nicht funktioniert hat und es keine pdf Datei gibt. Besser Du machst es in einem Zug. ps2pdf $each `basename $each .ps`.pdf && rm $each Dann wird nur gelöscht, falls bei ps2pdf nichts schief gelaufen ist. Vorrausgesetzt, ps2pdf gibt einen exitcode ungleich 0 aus, falls die pdf-Datei nicht erstellt wurde, oder nicht so wie sie sein sollte.
done; sleep 5;
Warum sleep? Sehe da nicht den Sinn. Halt, doch, jetzt habe ich verstanden, Du willst ständig auf neu aufschlagende Dateien reagieren. Hmm. Irgendwie merkwürdig. Du hast keine Abbruchbedingungen.
done exit
exit ist Überflüssig, wenn zu Ende, dann zu Ende.
es tut zwar, ist aber nich schön. Kann mir jemand das Script verbessern.
Ich kenne ps2pdf nicht, weiß nicht genau, wie es sich verhält. #!/bin/bash while true do for each in *.ps do ps2pdf $each `basename $each .ps`.pdf && rm $each || exit 1 done sleep 5 done Ich habe noch eine Abbruchbedingung eingebaut, fall was schief läuft, es sollte aber auch noch ein trap eingebaut werden um z.B ein CTRL-C abzufangen und aufzuräumen und dann erst abbrechen. Bernd -- Alle meine Signaturen sind rein zufällig und haben nichts mit dem Text oder dem Schreiber zu tun, dem ich antworte. Falls irgendwelche Unrichtigkeiten dabei sein sollten, so bedauere ich das. Es wäre nett, wenn Du mich benachrichtigen würdest. |Zufallssignatur 0