linux下使用curl访问多参数url

我要冲啦个人网站建设2021-07-01服务器
curl -i http://marsoffset.goforandroid.com/GoSmsMarService/abc?a=116.397428&b=39.90923
[1] 8741
[jb-xccheng@usa-ip-12 ~]$ HTTP/1.1 500 Internal Server Error
Server: nginx/1.2.0
Date: Wed, 20 Jun 2012 04:16:21 GMT
Content-Type: text/html;charset=utf-8
Content-Length: 1180
Connection: keep-alive

#出错信息

[1]+  Done  sudo curl -i http://marsoffset.goforandroid.com/GoSmsMarService/abc?a=116.397428 

实际发出的请求是:

http://marsoffset.goforandroid.com/GoSmsMarService/abc?a=116.397428

原因分析

由于url中有&其他参数获取不到,& 在shell脚本中有特殊的意义(以daemon运行)
单一个& 符号,且放在完整指令列的最后端,即表示将该指令列放入后台中工作。

小拓展

& 放在启动参数后面表示设置此进程为后台进程
默认情况下,进程是前台进程,这时就把Shell给占据了,我们无法进行其他操作,对于那些没有交互的进程,很多时候,我们希望将其在后台启动,可以在启动参数的时候加一个’&’实现这个目的。
如:

tianfang > run &
    [1] 11319
tianfang > ./game.e 1 &

进程切换到后台的时候,我们把它称为job。切换到后台时会输出相关job信息,以前面的输出为[1] 11319例:[1]表示job ID是1,11319表示进程ID是11319。切换到后台的进程,仍然可以用ps命令查看。

可以通过bg (background)和fg(foreground)命令将其在前后台间状态切换。

解决办法

#对&进行转义才能 $_GET获取到所有参数
curl  -s  http://marsoffset.goforandroid.com/GoSmsMarService/abc?a=116.397428\&b=39.90923

# 双引号把整个url引起来就ok了
curl "http://marsoffset.goforandroid.com/GoSmsMarService/abc?a=116.397428&b=39.90923"
文章关键词
linux
curl
多参数
url