我有一个用bash编写的脚本,并在Linux (CentOS 7)和MacOS上进行了测试。该脚本使用cURL与REST兼容的数据平台(XNAT)进行交互。
我希望Windows用户能够在Git bash中使用Git for Windows附带的相同脚本。不幸的是,在git中使用cURL似乎存在问题。
我对cURL的第一个使用是检索JSESSION cookie:
COOKIE=`curl -k -u $USERNAME https://theaddress/JSESSION`在Linux上,这要求用户输入密码,并将cookie存储在COOKIE中。在git-bash中,发出命令挂起,直到使用"ctrl + C“中断它。奇怪的是,此时会显示密码的查询消息,但太晚了,脚本已经终止。
我怀疑这可能与CR或LF问题有关,但却找不到一些我理解的信息。
任何指点都欢迎!
谢谢
编辑:如果我在命令中传递密码,上面的命令看起来很好,如下所示:
COOKIE=`curl -k -u $USERNAME:$PASSWORD https://theaddress/JSESSION`但是,正如这里所指出的:Using cURL with a username and password?我宁愿避免让用户输入他们的密码作为命令参数。
所以现在的问题是“为什么当我使用第一个命令时,cURL不提示输入密码?”当在Windows上使用git-bash时,该命令在Linux或MacOS中的行为与预期相同:
COOKIE=`curl -k -u $USERNAME https://theaddress/JSESSION`发布于 2018-06-07 13:48:52
最后回答我自己的问题,希望这对其他人有用。
根据以下线程:cURL,在git-bash中运行https://github.com/curl/curl/issues/573时,该问题似乎是一个已知的问题。
特别是见dscho在2015年12月30日的回答。
问题是我们在Git中使用的终端仿真器,因为GitforWindows2.5,MinTTY。此终端模拟器不与Win32控制台相关联,因此当cURL希望通过所述控制台与用户交互时,用户不会看到任何内容。
这个问题有一个解决办法,在这里有文档记录:https://github.com/git-for-windows/build-extra/blob/master/ReleaseNotes.md#known-issues
解决办法是通过winpty运行curl,如下所示: winpty curl [arguments]
毕竟,CR或LF没有问题。
所以,git可能不是在Windows中运行bash脚本的灵丹妙药。叹息..。
https://stackoverflow.com/questions/50724407
复制相似问题