2017-03-03 38 views
1

ファイル名に空白が含まれている場合、GhostScriptがファイル名のシェルスクリプト変数を受け入れることに問題があります。ファイル名にスペースがある場合、GSは "そのようなファイルを" 言わないファイル名に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 

、として名前を与える:

path/to/file/partial\ 

(最終バックスラッシュに注意してください)

私は」また、次のようになります。 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) 
+0

ファイル名のまわりに置く必要がありますが、あなたのシェルスクリプトがそれらを剥ぎ取っていると思われます。コマンドラインから試してみてください。 – KenS

+0

それは私がすでにやったことではありませんか? – benwiggy

+0

GhostScriptはエスケープバックスラッシュを好まないようです。スペースを "エスケープされていない"ままにして、バックスラッシュを削除すると、それは機能します。 bashにエスケープ文字をファイル・ストリングに入れないようにするにはどうすればよいですか? – benwiggy

答えて

1

は、私はそれを修正したと思います。 GhostScriptはエスケープ文字を正しく処理せず、文字通り解釈しているようです。だから、私はファイルパスからすべてのバックスラッシュを取り除いて入力を手にする必要があります。ソフトウェアのように古代の作品は、このようなバグを持っている必要があることを

filename=${filename//\\} 

ここでも、非常に奇妙な。

関連する問題