使用shell/bash脚本读取HTTP输出

使用shell/bash脚本读取HTTP输出,http,bash,shell,response,Http,Bash,Shell,Response,我的网址(http://myhost.com/getuser/Default.aspx?username=b772643)始终返回以下信息行: John, Thomas;John.B.Thomas@Company.com 我希望在不使用wget/lynx的情况下使用shell或bash脚本阅读这一行。我无法使用任何其他实用程序,如perl语言等。所以 curl "http://myhost.com/getuser/Default.aspx?username=b772643" curl "h

我的网址(http://myhost.com/getuser/Default.aspx?username=b772643)始终返回以下信息行:

John, Thomas;John.B.Thomas@Company.com
我希望在不使用wget/lynx的情况下使用shell或bash脚本阅读这一行。我无法使用任何其他实用程序,如perl语言等。

所以

curl "http://myhost.com/getuser/Default.aspx?username=b772643"


curl "http://myhost.com/getuser/Default.aspx?username=b772643"| sed 's/\(.*\);\(.*\)/\2 \1/' | while read email name; do echo =$email=$name=; done
您可以使用:

curl "http://myhost.com/getuser/Default.aspx?username=b772643"

并从返回的内容中提取数据:)

Curl或wget显然更适合此工作,但对于记录,bash和Unix标准命令(cat&printf)可以完成此工作

ksh引入了shell网络内部处理,这已被bash采用

#!/bin/bash

exec 5<> /dev/tcp/myhost.com/80
cat <&5 &
printf "GET /getuser/Default.aspx?username=b772643 HTTP/1.0\r\n\r\n" >&5
#/bin/bash
exec 5/dev/tcp/myhost.com/80
五类
一个衬里:

(echo 'GET /getuser/Default.aspx?username=b772643' > /dev/tcp/myhost.com/80);

刚刚核实。我可以用卷发,谢谢大家。所有的解决方案都很有效。Curl是最好的一个Curl“”是否可以在一行中执行此操作?@etree当然可以,只需将所有命令(分号分隔)放在一行中即可。您还可以创建一个shell函数。@ethree请用更专业和更具描述性的术语定义“不是很高兴”。我认为它对&’s感到不安-bash:意外标记“;”附近出现语法错误@etree您可能放了太多的分号,请发布您有问题的行,这一行对我来说很好:
(exec 5/dev/tcp/www.google.com/80;cat&5)