1
我遇到GhostScript接受shell脚本变量文件名的问题,如果这些文件名中有空格。GhostScript和空格的文件名
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
如果文件名中有空格,则GS说: “没有这样的文件”,给名称为:(注意最后的反斜线)
path/to/file/partial\
我m也得到: Error: /undefinedfilename in (/Users/Ben/Desktop/qwe\\ qwe.pdf)
它从字面上进行转义。我无法相信这样一款令人尊敬的软件有这么大的失败,尽管其他人似乎也遇到了同样的问题,没有任何重大的解决方案。有什么我可以做我的脚本?
我在MacOS 10.11和12. 哦,“没有空格”不是解决方案。 ;-)
UPDATE:即使是很简单的例子显示了错误:
> 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)
你需要在文件名中加上“”,我怀疑你的shell脚本剥离了它们。从命令行尝试它。 – KenS
这是不是我已经做了? – benwiggy
看来,GhostScript不喜欢转义反斜杠。如果我删除反斜杠,留下“未转义”的空间,那么它就会起作用。我如何告诉bash不要将转义字符放入我的文件字符串中? – benwiggy