2011-03-08 11 views
0

私がやっていることは、echo put $clientfilepath'client-'$clientversion-'.jar' >> ftp.ftpのシェルファイルです。 $clientfilepathがある:c:\\workspace\\project\\jack\\prj1\\target\\$clientversionは、私がftp.ftpに期待するもの1.0-snapshotシェルが複数の行にファイルを終了するエコー?

です:

put 
c:\\workspace\\project\\jack\\prj1\\target\\client-1.0-snapshot.jar 

しかし、私は取得していますが次のとおりです。

put c:\\workspace\\project\\jack\\prj1\\target\\ 
client-1.0-snapshot 
.jar 

私はダブルを使用しています\ファイルパス内の何も特殊文字として扱われるべきではありません。 誰も何が起こっているのか知っていますか?

+0

$ clientfilepathがスペースで終わっているようですか? –

+0

@cebewee、それは正しく入力されませんでした。私は書式設定を修正しましたが、今問題を見るのが簡単になります:) – sarnold

+0

@Jack、 '$ clientfilepath'はどのように生成されましたか?私はそれが最後に余分な ''\ n''文字を持っていると思います。 – sarnold

答えて

0
echo put $clientfilepath'client-'$clientversion-'.jar'|tr '\n' '' >> ftp.ftp 
+0

それはまだジェールは解散します。それは実際にはかなり奇妙です。 – Jack

+2

これは 'tr -d '\ n'' –

+0

であっても分割されます。 – Jack

0

あなたは引用を簡素化することができます:

echo "put ${clientfilepath}client-${clientversion}-.jar" >> ftp.ftp 

は、それがあなたの問題に役立つかどうかを確認するためにそれを試してみてください。また、代わりにechoprintfを試してみてください。

printf 'put %sclient-%s-.jar\n' "$clientfilepath" "$clientversion" >> ftp.ftp 
+0

両方が私の元の状況のようになります – Jack

+0

@ジャック:あなたパイプそれを場合は、hexdumpに対して 'を通じて改行を参照しています-C'? –

関連する問題