我需要增加用户和用户但是当我在curl中写我的变量时,当我尝试它时我什么都没得到
(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
答案 0 :(得分:1)
尝试运行代码并启用警告和调试:
ruby -cW2 path/to/your/code
您应该看到类似的内容:
syntax error, unexpected tIDENTIFIER, expecting keyword_end ... sleep(10) ... ^
当您遇到问题时,您需要首先执行此操作。当启用警告并设置为最高值时,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时间使用Ruby,然后是操作系统,创建一个新的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"