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)
Sie müssen "" um den Dateinamen setzen, ich vermute, dass Ihr Shell-Skript sie abstreift. Probieren Sie es über die Befehlszeile aus. – KenS
Habe ich das nicht schon gemacht? – benwiggy
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