2016-11-08 9 views
1

ウェブサイトからデータをダウンロードするためのbashスクリプトがあります。このためには、WebサイトのJavaクライアントを使用してユーザー名とパスワードを渡す必要があります。私のパスワードには問題を引き起こす特殊文字があります。私はいつもの解決策を試しましたが、誰も働いていません。bash:特殊文字を含むパスワードを渡す方法

#!/bin/sh 
#$ -cwd 

MYPASSWORD='password&123' 

java -jar client.jar -p username $MYPASSWORD file.gz 

\をコマンドで直接使用するか、変数を使用して試してみます。しかし、それは動作しませんでした。ログインに失敗しました!

MYPASSWORD=password\&123 
java -jar client.jar -p username $MYPASSWORD file.gz 

「試した」または「」。ログインに失敗しました。

MYPASSWORD='password&123' 
java -jar client.jar -p username "\"$MYPASSWORD\"" file.gz 

また、試してみてください。 MYPASSWORD = 'パスワード'「&」「123」

どのような提案が最も役立ちます。このウェブサイトのパスワードをリセットすることも問題があるようです。

+1

囲むためにトリプルシンプルクォート( '' ')を試してもよろしいですか? – F4240

+1

このJavaプログラムを使用してbashスクリプトなしでファイルをダウンロードできますか?プログラムがスクリプト外で動作しない場合、スクリプトの内部では動作しません。 –

+0

F4240の意味: '$ {MYPASSWORD}'を試しましたか? – GhostCat

答えて

2

パラメータを引用するだけです。

mypassword='password&123' 
java -jar client.jar -p username "$mypassword" file.gz 

引用符は、パラメータが展開された後mypasswordの任意の更なる処理を行うことから、シェルを保つためにのみ存在します。実際にプログラムに引用符を渡すことはありません。

+0

いいえ、その仕事はありませんでした。ログインに失敗しました。 – user19758

+1

次に、問題はシェルではありません。パスワードを誤って入力したか、Javaプログラムが内部的に誤って処理しています。 – chepner

+0

(あなたのパスワードに一重引用符が含まれていれば、一重引用符で囲むことはできません。 'foo = 'bob'spassword''は' foo'を 'bob'spass引用符で囲まれた文字列 'bob'と引用符で囲まれていない文字列' spass'と引用符で囲まれていない文字列 'word'との連結に対して)。 – chepner

関連する問題