如何将curl的grep输出保存到变量,而不将其记录到控制台?

时间:2018-10-15 08:46:32

标签: bash shell curl grep cgi

我有一个shell脚本(由apache cgi调用),该脚本应该卷曲并grep结果以检查服务器的运行状况。到目前为止,这就是我所得到的。

printf "Content-type: text/html\n"
PAGE="$(curl -v -u http://targetserver/xmlgatewayauth/login)"
CRES="$($PAGE|grep "login";)"
echo $CRES;

如果我在Linux中将脚本作为外壳运行,则输出为:

...
< Location: login_success.jsp
< Content-Length: 0
< Date: Mon, 15 Oct 2018 08:42:39 GMT
...

但是如果我从浏览器通过CGI调用脚本,结果为空。 我已经使用静态输出测试了CGI脚本,并且该脚本可以正常工作。 (Hello World)。

问题是: 我不希望脚本输出除变量“ CRES”以外的任何内容。但是它将整个curl(grep)(不是变量)输出到控制台,并且没有将变量输出到网站。

我该如何解决问题?

1 个答案:

答案 0 :(得分:0)

问题是您要在其他行之前打印第1行。因此,将顺序更改为此:

PAGE="$(curl -v -u http://targetserver/xmlgatewayauth/login)"
CRES="$($PAGE|grep "login";)"
echo $CRES;
printf "Content-type: text/html\n"

PAGE="$(curl -v -u http://targetserver/xmlgatewayauth/login)"
CRES="$($PAGE|grep "login";)"
printf "Content-type: text/html\n"
echo $CRES;