git-bash 中的 curl 命令
Posted
技术标签:
【中文标题】git-bash 中的 curl 命令【英文标题】:curl command in git-bash 【发布时间】:2018-11-16 09:01:24 【问题描述】:我有一个用 bash 编写的脚本,并在 Linux (CentOS 7) 和 MacOS 上进行了测试。该脚本使用cURL
与符合 REST API 的数据平台 (XNAT) 进行交互。
我希望 Windows 用户可以在 git-bash 中使用与 Git for Windows 一起打包的相同脚本。不幸的是,在 git-bash 中使用 cURL
时似乎存在问题。
我对@987654324@ 的第一个用途是检索 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`
【问题讨论】:
【参考方案1】:最后回答我自己的问题,希望这对其他人有用。
根据此线程,从 git-bash 中运行 cURL
时,此问题似乎是一个已知问题:
https://github.com/curl/curl/issues/573
特别是,请参阅 2015 年 12 月 30 日 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]
毕竟CR
或LF
不是问题。
太棒了,git-bash 可能不是 magic-bullet (tm) 以零努力在 Windows 中运行我的 bash 脚本。叹息……
【讨论】:
非常感谢提供错误链接....虽然解决方案真是太可惜了。以上是关于git-bash 中的 curl 命令的主要内容,如果未能解决你的问题,请参考以下文章
在 Java 中使用 ProcessBuilder 读取输出 git-bash
Windows端git-bash无法找到open命令,bash: open: command not found