シェル スクリプトを使用して Java プログラムを呼び出しています。渡す Java プログラムを呼び出すときに、ディレクトリへのパスを持つ -Dargument を渡します。この -D 引数は、ファイルから読み取られます。このパスにスペースが含まれていると、問題に直面しています。私は引用符と引用符をエスケープしてみましたが、どちらもうまくいきません。
ここに私のシェルスクリプトコード、test.shがあります
D_ARG=`(tr '\r\n' ' ' < argument.dat)
\#executing java code by passing above argument
java ${D_ARG} TestProgram
以下は私の引数ファイル、argument.dat です。
-Dargument1="/Path /To A/File"
set -x を使用してエコーを設定すると、シェルがそれを
'-Dargument1="/Path' '/To' 'A/File"'
スペースに遭遇したときに一重引用符を追加すると、「/To」クラスが見つからないという例外が発生します。この問題を解決する方法。どんな提案や助けも本当に価値があります。