将管道式curl命令输出输出到bash中的变量

时间:2019-08-21 15:22:57

标签: bash

我试图监视代理服务器的输出以解决问题,为此,我创建了一个使用curl的bash脚本,但是在获取变量中的输出时遇到了麻烦。 / p>

我尝试过使用刻度或括号来进行转义和使用变量的不同方法。

我先用过,但是不能正常工作:

response=$(curl -k -x $i:1234 -U $u:$p -w $outputformat -s -o /dev/null $site | cut -d ' ' -f 2)

因此进行了更改,现在代码如下所示:

response=$(curl\ -k\ -x\ $i:1234\ -U\ $u:$p\ -w\ \"HTTP\ Response:\ \%\{http\_code\}\ \-\ URL:\ \%\{redirect\_url\}\\n\"\ -s\ -o\ /dev/null\ $site\ \|\ cut\ -d\ \'\ \'\ -f\ 2)
if [ "$response" -eq 200 ]; then
   ((count200++))
   echo $count200 > $counter_200
else
   ((countx0x++))
   echo $count0x0 > $counter_x0x
fi

8/22-根据要求更新了代码,我将代码恢复为以前的代码,并且在WaltDe的建议下,删除了-o选项:

echo "Proxy: $i"
echo "Fetching site: $site"
outputformat="\"HTTP Response: %{http_code} - URL: %{redirect_url}\n\"" 
response=$(curl -k -x $i:$port -U $u:$p -w $outputformat -s $site | cut -d ' ' -f 2)
if [ "$response" -eq 200 ]; then
   ((count200++))
   echo $count200 > $counter_200
else
   ((countx0x++))
   echo $count0x0 > $counter_x0x
fi

这是我看到的错误消息:

  

./ ptest.sh:第80行:curl -k -x *********:** -U -w“ HTTP响应:%{http_code}-URL:%{redirect_url} \ n“ -s -o / dev / null https://www.yahoo.com | cut -d''-f 2:没有这样的文件或目录

     

./ ptest.sh:第82行:[::预期为整数表达式

8/22更新-这是我现在遇到的问题:

  

代理:************   提取网站:https://www.yahoo.com   html>   id =“ atomic”      (...)    缩短可读性-html输出   (...)   响应::预期为整数表达式   ./ptest.sh:第83行:[:响应::需要整数表达式

有人能阐明我做错了什么吗?

1 个答案:

答案 0 :(得分:1)

您需要删除将输出写入文件的-o选项(在您的情况下为/ dev / null)。这是您应该更新的代码。

   preprod = keras.layers.Dot(axes=1, normalize=False)([bet_vec, user_vec])

另一种检查方法是删除管道并将STDERR发送到/ dev / null。这将向您显示正在传递给剪切命令的内容。

如果一切顺利,您应该会看到一些东西。

$ response=$(curl -k -x $i:1234 -U $u:$p -w $outputformat -s $site | cut -d ' ' -f 2)

如果没有任何输出,请删除STDERR重定向并回显返回码。

$ curl -k -x $i:1234 -U $u:$p  -s $site 2>/dev/null

如果退出代码不是0,则错误。您可以在手册页中找到错误代码,或者该site的书写方式很好。

否获取响应代码。

$ curl -k -x $i:1234 -U $u:$p  -s $site
$ echo $?
0
相关问题