2014-01-13 59 views
0

我需要增加的用戶B和usere但是當我寫捲曲我的變量,當我嘗試它,我得到什麼打印PARAMS每個捲曲

(1..180000).step(20000)do |userb| 
(20000..180000).step(20000)do |usere| 
curl = %x[ curl -i -s -H "Host: xxxx" "http://XXXXX/scripts/exportStatsCsv/testA1?start='+ userb +'&end='+ usere +'&startDate='#{@array_timestampdate[0]}'&endDate='#{@array_timestampdate[1]}'" ]                         sleep(10) 
    end 
end 
+1

定義「什麼也沒有」。 –

回答

1

嘗試用警告運行代碼和調試啓用:

ruby -cW2 path/to/your/code 

你應該看到:

 
syntax error, unexpected tIDENTIFIER, expecting keyword_end 
...       sleep(10) 
...        ^

你需要做這個作爲第一STE當你遇到問題時。在啓用警告並將其設置爲最高值時,Ruby會爲您提供有關腳本問題的更多詳細信息。下面介紹一下標誌的含義:

 
    -c    check syntax only 
    -W[level=2]  set warning level; 0=silence, 1=medium, 2=verbose 

你得到這個錯誤,因爲sleep(10)需要作爲一個單獨的語句執行。您可以在其間插入;,並調用cURL,或將其放在一行上。爲了使命令更易於閱讀,我建議使用第二個選項。

此外,我強烈建議使用Curb gem,而不是像你一樣在子shell中啓動cURL。你正在失去靈活性,浪費CPU時間,然後在操作系統上創建一個新的shell來啓動cURL。最後,您需要學習更清晰地編寫代碼,否則您很快就會陷入困惑的角落。下面是我怎麼會寫代碼的起點:

require 'uri' 

@array_timestampdate = ['start_date', 'end_date'] 

(1..180000).step(20000) do |userb| 
    (20000..180000).step(20000) do |usere| 

    uri = URI.parse('http://XXXXX/scripts/exportStatsCsv/testA1') 
    uri.query = URI.encode_www_form(
     { 
     'start'  => userb, 
     'end'  => usere, 
     'startDate' => @array_timestampdate[0], 
     'endDate' => @array_timestampdate[1] 
     } 
    ) 
    curl = %Q[ curl -i -s -H "Host: xxxx" "#{uri.to_s}" ] 

    puts curl 
    end 
end 

隨着輸出的一個小例子:

>> curl -i -s -H "Host: xxxx" "http://XXXXX/scripts/exportStatsCsv/testA1?start=1&end=20000&startDate=start_date&endDate=end_date" 
... 
>> curl -i -s -H "Host: xxxx" "http://XXXXX/scripts/exportStatsCsv/testA1?start=160001&end=180000&startDate=start_date&endDate=end_date" 
+0

我找到了解決方案,我可以在解決方案下面找到問題curl =%x [curl -i -s -H'Host:xxxx'「http:// xxxxx/scripts/Stats/testA1?start =#{userb} &end =#{usere}&startDate ='#{@ array_timestampdate [0]}'&endDate ='#{@ array_tim estampdate [1]}'「] – zyriuse

+0

感謝您的幫助 – zyriuse