2014-02-12 34 views
1

我有一個奇怪的問題,西納特拉:西納特拉失去查詢字符串的部分,捲曲

class Server < Sinatra::Base 
    before do 
    puts params.inspect 
    end 
    get '/' do 
    end 
end 

當我蜷縮URL以:

chienandalusialocal:~ ngw$ curl http://0.0.0.0:9292/thing?a=100&b=200 

params哈希表中只包含第一個參數:

127.0.0.1 - - [12/Feb/2014 17:47:39] "GET /thing?a=100 HTTP/1.1" 401 - 0.0011 
a=100 
{"a"=>"100"} 

這裏發生了什麼,我該怎麼辦才能解決這個問題?

+1

也許你的外殼解釋查詢字符串? – Max

+0

'curl'http://0.0.0.0:9292/thing?a = 100&b = 200'' – bliof

回答

1

在bash shell將啓動進程並在後臺運行,它的&

所以,如果你運行正常的命令,

curl http://0.0.0.0:9292/thing?a=100&b=200 

猛砸將此解釋爲curl http://0.0.0.0:9292/thing?a=100&和代表的過程作爲後臺進程。

如果向上滾動一點,你可能會發現類似

[1] 14039 

來表示後臺進程的pid,並在年底的另一個說法,像

[1]+ Done     curl http://0.0.0.0:9292/thing?a=100 

來表示完成curl命令。


的出路,因爲已經建議,是要麼逃避符號,或者把字符串中的報價如下:

curl http://0.0.0.0:9292/thing?a=100\&b=200 
curl 'http://0.0.0.0:9292/thing?a=100&b=200' 
+0

現在我想自殺...謝謝:) – ngw

+0

@ngw酷然後:) –

0

Bash看到&符號並試圖用它做點什麼。您可以轉義&符號,或將該字符串作爲bliof建議的引號。

curl http://0.0.0.0:9292/thing?a=100\&b=200 

curl 'http://0.0.0.0:9292/thing?a=100&b=200'