git-bash中的curl命令

Cyr*_*ril 6 windows bash curl git-bash

我有一个用bash编写的脚本,并在Linux(CentOS 7)和MacOS上进行了测试.该脚本用于cURL与符合REST API的数据平台(XNAT)进行交互.

我希望Windows用户可以在git-bash中使用与Git for Windows打包相同的脚本.不幸的是,cURL在git-bash中使用时似乎存在问题.

我做的第一个用途cURL是检索一个JSESSION cookie:

COOKIE=`curl -k -u $USERNAME https://theaddress/JSESSION`
Run Code Online (Sandbox Code Playgroud)

在Linux上,这会要求用户输入密码并存储cookie COOKIE.在git-bash中,发出命令会挂起,直到使用" ctrl + C"来中断它.奇怪的是,此时显示了密码的查询消息,但为时已晚,脚本已终止.

我有一个怀疑,这可能与做CRLF问题,但不能找到一些信息,我明白对此.

任何指针都会受到欢迎!

谢谢

编辑: 如果我在命令中传递密码,上面的命令似乎正常工作:

COOKIE=`curl -k -u $USERNAME:$PASSWORD https://theaddress/JSESSION`
Run Code Online (Sandbox Code Playgroud)

但是,正如此处所指出的: 使用cURL和用户名和密码? 我宁愿避免让用户输入他们的密码作为命令参数.

所以现在的问题是" cURL当我使用第一个命令时,为什么不提示输入密码?" 当在Windows上的git-bash中时,该命令在Linux或MacOS中的行为与预期相同:

 COOKIE=`curl -k -u $USERNAME https://theaddress/JSESSION`
Run Code Online (Sandbox Code Playgroud)

Cyr*_*ril 6

结束回答我自己的问题,希望这可能对其他人有用.

cURL根据这个帖子,从git-bash中运行时看来这个问题是一个已知的问题:https: //github.com/curl/curl/issues/573

特别是,看到的答案dscho二○一五年十二月三十〇日:

问题是我们使用Git Bash的终端模拟器,因为Git for Windows 2.5,MinTTY.此终端仿真程序未与Win32控制台关联,因此当cURL希望通过所述控制台与用户交互时,用户看不到任何内容.

此问题有一个解决方法,在此处记录:https: //github.com/git-for-windows/build-extra/blob/master/ReleaseNotes.md#known-issues

解决方法是通过winpty运行curl,如下所示: winpty curl [arguments]

未与问题CRLF毕竟.

Soooo,git-bash可能不是在Windows中轻松运行我的bash脚本的魔法子弹(tm).叹...