Bashで記述され、Linux(CentOS 7)およびMacOSで動作するテスト済みのスクリプトがあります。このスクリプトは、cURL
を使用してREST API準拠のデータプラットフォーム(XNAT)と対話します。
WindowsユーザーがGit for Windowsに同梱されているgit-bash内で同じスクリプトを使用できることを望んでいました。残念ながら、git-bashでcURL
を使用すると問題があるようです。
cURL
の最初の使用は、JSESSION Cookieを取得することです。
COOKIE=`curl -k -u $USERNAME https://theaddress/JSESSION`
Linuxでは、これはユーザーにパスワードを要求し、CookieをCOOKIE
に保存します。 git-bashでは、コマンドの発行は、「ctrl + C
」を使用して中断するまでハングします。奇妙なことに、パスワードのクエリメッセージが表示されますが、遅すぎてスクリプトが終了しました。
これはCR
またはLF
の問題に関係しているのではないかと疑っていますが、これに関して理解している情報が見つかりません。
どんなポインターでも歓迎です!
ありがとうございました
EDIT:次のようなコマンドでパスワードを渡すと、上記のコマンドは正常に動作するようです:
COOKIE=`curl -k -u $USERNAME:$PASSWORD https://theaddress/JSESSION`
ただし、ここで指摘されているように、 ユーザー名とパスワードでcURLを使用しますか? ユーザーがコマンド引数としてパスワードを入力するのは避けたいです。
したがって、質問は「最初のコマンドを使用するときにcURL
がパスワードの入力を求めないのはなぜですか」 Windowsのgit-bashの場合、そのコマンドはLinuxまたはMacOSで期待どおりに動作します:
COOKIE=`curl -k -u $USERNAME https://theaddress/JSESSION`
私自身の質問に返信することになりましたが、これが他の誰かに役立つかもしれません。
この問題は、このスレッドによると、git-bash内からcURL
を実行する場合の既知の問題であると思われます。 https://github.com/curl/curl/issues/57
特に、dschoの回答を参照してください30 Dec 2015:
問題は、Git for Windows 2.5、MinTTY以降、Git Bashで使用するターミナルエミュレーターです。このターミナルエミュレータはWin32コンソールに関連付けられていないため、cURLが上記のコンソールを介してユーザーと対話する場合、ユーザーには何も表示されません。
この問題には回避策があります。回避策は次のとおりです。 https://github.com/git-for-windows/build-extra/blob/master/ReleaseNotes.md#known-issues
回避策は、次のようにwinptyを介してcurlを実行することです:winpty curl [arguments]
結局、CR
やLF
の問題ではありません。
Soooo、git-bashはmagic-bullet(tm)でなくてもWindowsでbashスクリプトを簡単に実行できます。はぁ...