GhostScript和文件名中的空格

时间:2017-03-03 11:45:55

标签: shell unix ghostscript

我遇到GhostScript接受文件名的shell脚本变量的问题,如果这些文件名中有空格的话。

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\

(注意最后的反斜杠。)

我也得到: Error: /undefinedfilename in (/Users/Ben/Desktop/qwe\\ qwe.pdf)

它在字面上正在逃避。我无法相信这样一个令人尊敬的软件有如此重大的失败,尽管其他人似乎遇到了同样的问题,没有任何重大的解决方案。我可以对我的剧本做些什么吗?

我在MacOS 10.11和12上。 哦,“没有空格”不是解决方案。 ; - )

更新:即使是最简单的例子也会显示错误:

> 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)

1 个答案:

答案 0 :(得分:1)

认为我已经修好了。似乎GhostScript没有正确处理转义字符,从字面上解释它们。所以你(我)需要通过从文件路径中删除所有反斜杠来对输入进行处理。

 filename=${filename//\\}

同样,非常奇怪的是,这样一个古老的软件应该有这样的错误。