2017-03-03 4 views
1

Ich habe Probleme mit GhostScript, das Shellskriptvariablen für Dateinamen akzeptiert, wenn diese Dateinamen Leerzeichen enthalten.GhostScript und Leerzeichen in Dateinamen

gs -dPDFX -dNOPAUSE -dBATCH -dNOOUTERSAVE -sDEVICE=pdfwrite -sOutputFile="${filename}" -sColorConversionStrategy=CMYK -dProcessColorModel=/DeviceCMYK -dCompatibilityLevel=1.4 "${f}" /usr/local/share/ghostscript/9.20/lib/PDFX_def.ps 

Wenn der Dateiname ein Leerzeichen hat, dann sagt GS "keine solche Datei", geben Sie den Namen als: (. Beachten Sie den abschließenden Backslash)

path/to/file/partial\ 

I‘ m auch bekommen: Error: /undefinedfilename in (/Users/Ben/Desktop/qwe\\ qwe.pdf)

wo es die Flucht wörtlich nimmt. Ich kann nicht glauben, dass solch ein ehrwürdiges Stück Software einen so großen Fehler hat, obwohl andere anscheinend das gleiche Problem hatten, ohne irgendeine signifikante Lösung. Kann ich irgendetwas mit meinem Skript machen?

Ich bin auf MacOS 10.11 und 12. Oh und "habe keine Leerzeichen" ist keine Lösung. ;-)

UPDATE: Selbst die einfachsten Beispiel zeigt den Fehler:

> f="/Users/Ben/Desktop/qwe\ qwe.pdf" 
> gs "$f" 
GPL Ghostscript 9.20 (2016-09-26) 
Copyright (C) 2016 Artifex Software, Inc. All rights reserved. 
This software comes with NO WARRANTY: see the file PUBLIC for details. 
Error: /undefinedfilename in (/Users/Ben/Desktop/qwe\\ qwe.pdf) 
+0

Sie müssen "" um den Dateinamen setzen, ich vermute, dass Ihr Shell-Skript sie abstreift. Probieren Sie es über die Befehlszeile aus. – KenS

+0

Habe ich das nicht schon gemacht? – benwiggy

+0

Es scheint, dass GhostScript den Escape Backslash nicht mag. Wenn ich den Backslash entferne und das Leerzeichen "unescaped" belasse, funktioniert es. Wie sage ich bash, dass ich keine Escape-Zeichen in meine Datei-Strings einfügen soll? – benwiggy

Antwort

1

denken, dass ich es behoben haben. Es scheint, dass GhostScript keine Escape-Zeichen korrekt behandelt und diese wörtlich interpretiert. Daher müssen Sie (I) die Eingabe durch Entfernen aller Backslashes aus dem Dateipfad sanktionieren.

Wieder, sehr seltsam, dass solch eine alte Software einen solchen Fehler haben sollte.

Verwandte Themen