2012-10-15 21 views
34

私は主ファイルを持っています。主なファイルは、(ソースからメインから)パスを指す変数を持つプロパティファイルです。空白を含むパスの入力方法は?

プロパティファイルには、次のようになります。

TMP_PATH=/$COMPANY/someProject/tmp 
OUTPUT_PATH=/$COMPANY/someProject/output 
SOME_PATH=/$COMPANY/someProject/some path 

問題は私がスペースを含むパスを(私はそれを変更することはできません)を使用する必要があり、SOME_PATHです。

引用符で空白をエスケープしようとしましたが、これまでのところ解決策はありませんでした。

私はあなたが置くことによって、「スペース」文字をエスケープすることができます

答えて

45

使用バリアントthreeeこれらの1:

SOME_PATH="/mnt/someProject/some path" 
SOME_PATH='/mnt/someProject/some path' 
SOME_PATH=/mnt/someProject/some\ path 
+0

最後のものは私のためにそれをしました。ありがとう – CW0007007

+0

@ CW0007007:実際には、3つはすべて正しいです –

+0

はい、私は既にスペースをエスケープしていました。他の人が間違っていると言っていませんでした。 – CW0007007

1
SOME_PATH=/mnt/someProject/some\ path 

を別の変数$COMPANYを使用していますが、パスを編集した\それの直前。

+0

いや、私は文字をエスケープしようとしたが、その場合には、私を与える「を/ mnt "パスなし" – Federico

+0

あなたのOSで何かしなければならないかもしれません。標準的なbashコンソールが動作するはずです。あなたはどのOSを使用していますか? – meza

+0

私はubuntuを使っています – Federico

15

を動作するはず単一引用符での問題は、私はパスで

+4

私はそれをして、働かなかった – Federico

+0

万が一の引用でそのパスをラップしましたか? –

+1

解決済み。問題は1つの参照で引用符のない変数だった – Federico

0

をファイルには、唯一のパラメータの割り当てが含まれている場合、あなたはそれを調達する代わりに、次のループを使用することができます。

# Instead of source file.txt 
while IFS="=" read name value; do 
    declare "$name=$value" 
done < file.txt 

これはあなたが持っセーブあなたはfile.txtから任意のコードを実行する危険性がないので、ファイル内の何かを引用し、より安全です。

+0

これは解決策であった可能性があります。問題は、割り当てよりも多くのことがあるということです。ありがとう! – Federico

25

私は自分で解決策を見つけました。 問題は2か所にありました。割り当ては適切な引用が必要です。

SOME_PATH="/$COMPANY/someProject/some path" 

は解決策の1つです。

しかし、シェルでそれらの引用符は、メモリに保存されているあなたは、この変数を使用したいとき はそう、あなたが例えば、再びそれを引用する必要はありませんされています

NEW_VAR="$SOME_PATH" 

ない場合は、スペースがされるので、次のようにコマンドレベルに拡張されました:

NEW_VAR=/YourCompany/someProject/some path 

これはあなたが望むものではありません。

1:それはhttp://www.cofoh.com/white-shell

+3

これは本当に正解とマークされるべきです。変数自体を引用することの詳細は、人を動かす主なものと思われる(私も含めて) – pospi

+0

私を助けた情報の重要な部分は、変数の定義時に使用された引用が値の一部にならないという事実でしたその変数は使用時に再び引用符で囲まなければなりません。 – bassim

0

のUbuntuでのパスは、「ディレクトリの/ホーム/ EC2ユーザー/名前」である場合は、これを行うについて

詳細情報については、あなたは私の記事をチェックアウトすることができます)Javaのビルド。プロパティファイル:~//home/ec2-user

2)Jenkinsfileに等しい

build_path='/home/ec2-user/Name\\ of\\ Directory' 

:/ someProject /一部

build_path=buildprops['build_path'] 
echo "Build path= ${build_path}" 
sh "cd ${build_path}" 
関連する問題