Probleme mit einem .sh Script

Hannes_007

Grünschnabel
Hallo,

unter Suse Linux 11.2 / Kubuntu 10.04 habe ich mir ein Service-Menü angelegt.
Bis auf das Nachfolgende funktioniert alles bestens.

Bisher habe ich auf der Konsole mit dem Programm pdftk Anhänge an ein Pdf-File erzeugt.

Der Code lautete
Code:
pdftk beispiel.pdf attach_files Anlage1.pdf Anlage2.pdf Anlage3.pdf output beispiel_mit_anhang.pdf

Das ganze habe ich nun in ein script gepackt ( oder zumindest versucht )
Code:
#!/bin/sh
# PDF Tool Sammlung zum Einbinden in KDE Service Menüs

RETURN=""

#
# Prüfen, dass mindestens ein Argument übergeben wurde
#
if [ $# -lt 1 ] ; then
  echo "Bitte das Script nicht direkt aufrufen." > /dev/stderr
  exit 1
fi

#
# Fallunterscheidungen (anhand des ersten Parameters)
#
case "$1" in
	pdftk-attach-files)	# Usage: ./pdftk-tools.sh pdftk-attach-files <input.pdf>
		# Prüfe Parameteranzahl
		if [ $# -ne 2 ] ; then exit ; fi
		
		# Hole Benutzereingaben
		INPUT="$2"
		ATTACHMENTS=`kdialog --title "Anhängen auswählen" --multiple --getopenfilename ~/ "*.pdf"`
		if [ $? -ne 0 ] ; then exit ; fi # Abbrechen, falls der Dialog einfach geschlossen wurde (--> kdialog gibt Returncode 1 zurück)
		OUTPUT="$INPUT.attachments.pdf"
		
		# Starte pdftk
		RETURN=`pdftk "$INPUT" attach_files "$ATTACHMENTS" output "$OUTPUT" 2>&1`
	;;
	
	pdftk-bla)
		# irgendwas anders ...
	;;
esac

#
# Fehlermeldung ausgeben, wenn das letzte ausgeführte Kommando nicht fehlerfrei ausgeführt wurde
#
if [ $? -ne 0 ] ; then
	kdialog --title "Fehler" --error "$RETURN"
fi


Wenn ich im Konqueror oder im Dolphin eine Pdf-Datei mit der rechten Maustaste markiere und das script starte, öffnet sich ein
Fenster, indem ich auf der Festplatte die Dateien markieren kann, die ich als Anhang an das Pdf File haben möchte.
Anschließend wird eine Datei mit dem Namen xxx.attachments.pdf erzeugt. Leider hat diese Datei keine Anhänge. Woran kann das liegen?


mfg
Hannes
 
Code:
		RETURN=`pdftk "$INPUT" attach_files "$ATTACHMENTS" output "$OUTPUT" 2>&1`

Prinzipiell würde ich den Fehler in dieser Zeile vermuten auch wenn ich das Programm nicht kenne. Durch die doppelten Ausführungszeichen wird die wohl durch Leerzeichen getrennte Liste mit Dateinamen fpr pdftk zu einem einzigen Dateinamen und das ganze schlägt daher fehl.
 
Hallo,

wie müsste dann die Zeile aussehen
Habe nicht so viel Ahnung vom programmieren?
Beim o. Script hatte mein Sohn mitgewirkt.

mfg
Hannes
 
Die Anführungszeichen sind OK, müssen aber nicht sein… Darüber hinaus sieht das Script gut aus, die Frage ist aber wie sich KDialog verhält und wieso Du einer Variablen ein Execute übergibst. Die Varibale "RETURN" ist unnötig (aber nicht falsch).
 
Hi.

Raubkopierer hat völlig Recht.

Bei soetwas bietet es sich an Arrays zu benutzen (und die Backticks sollte man besser meiden):
Bash:
ATTACHMENTS=( $(kdialog --title "Anhängen auswählen" --multiple --getopenfilename ~/ "*.pdf") )
...
RETURN=$(pdftk "$INPUT" attach_files "${ATTACHMENTS[@]}" output "$OUTPUT" 2>&1)
Gruß
 

Neue Beiträge

Zurück