如何在bash脚本中运行curl并将结果保存在变量中

如何在bash脚本中运行curl并将结果保存在变量中,bash,curl,Bash,Curl,这本应该很容易,但由于某些原因,它不是: 试着运行一个简单的curl命令,获取它的输出,然后用它做一些事情 cmd='curl -v -H "A: B" http://stackoverflow.com' result=`$cmd | grep "A:"` ... 问题-未发送标题“A:B” curl命令的执行似乎忽略了header参数,以“B”作为主机运行curl两次(显然失败) 有什么想法吗?您的问题是,在第一个命令上所做的只是将cmd设置为等于字符串 尝试使用$(…)执行实际命令,如下所

这本应该很容易,但由于某些原因,它不是:

试着运行一个简单的
curl
命令,获取它的输出,然后用它做一些事情

cmd='curl -v -H "A: B" http://stackoverflow.com'
result=`$cmd | grep "A:"`
...
问题-未发送标题“A:B”

curl命令的执行似乎忽略了header参数,以“B”作为主机运行curl两次(显然失败)


有什么想法吗?

您的问题是,在第一个命令上所做的只是将cmd设置为等于字符串

尝试使用
$(…)
执行实际命令,如下所示:

cmd=$(curl -v -H "A: B" http://stackoverflow.com)
其结果将是with curl请求的实际输出


这个问题已经被回答了很多次,例如,请参见此处。请记住,cURL debug输出被重定向到STDERR,这样您就可以将输出通过管道传输到另一个程序,而不必将信息阻塞管道的输入

使用
--STDERR-
标志将STDERR重定向到STDOUT,如下所示:

cmd="curl -s -v http://stackoverflow.com -H 'Test:1234' --stderr -"
result=`$cmd | grep "Test:"`
echo $result

./stackoverflow.sh 
> 'Test:1234'

我不确定你看到的问题是什么?您的预期输出是什么?@elad tabak我建议您在将命令的结果存储到任何变量之前,都应该像我建议的那样检查命令的结果。这将帮助您找到问题的确切位置