这应该很容易,但由于某种原因,它不是:
尝试运行一个简单的curl命令,获取它的输出,然后用它做一些事情.
cmd='curl -v -H "A: B" http://stackoverflow.com'
result=`$cmd | grep "A:"`
...
Run Code Online (Sandbox Code Playgroud)
问题 - 标题"A:B"未发送.
执行curl命令似乎忽略了header参数,并运行curl两次 - 第二次以"B"作为主机(显然失败).
任何的想法?
小智 6
请记住,cURL 调试输出被重定向到 STDERR - 这样您就可以将输出通过管道传输到另一个程序,而不会破坏管道输入的信息。
使用标志将 STDERR 重定向到 STDOUT,--stderr -如下所示:
cmd="curl -s -v http://stackoverflow.com -H 'Test:1234' --stderr -"
result=`$cmd | grep "Test:"`
echo $result
./stackoverflow.sh
> 'Test:1234'
Run Code Online (Sandbox Code Playgroud)
你的问题是你在第一个命令上所做的只是将cmd设置为等于一个字符串.
尝试使用如下$(...)执行实际命令:
cmd=$(curl -v -H "A: B" http://stackoverflow.com)
Run Code Online (Sandbox Code Playgroud)
结果将是curl请求的实际输出.
这已被多次回答,例如将set变量设置为终端命令(Bash)的结果
| 归档时间: |
|
| 查看次数: |
5131 次 |
| 最近记录: |