2012-09-14 26 views
1

我有一个Ruby脚本输出:系统调用卷曲犯规显示了从Ruby脚本

#!/usr/bin/env ruby 

`curl -X GET http://host/someurl' 

响应犯规得到显示在终端,当我运行此脚本:

$ ./script.rb 
    % Total % Received % Xferd Average Speed Time Time  Time Current 
           Dload Upload Total Spent Left Speed 
100 146 0 146 0  0  73  0 --:--:-- 0:00:01 --:--:-- 73 
$ 

服务器不发送一些数据。如果我提供-o卷曲:

`curl -X GET -o <some_file> http://host/someurl' 

some_file包含服务器响应。虽然同样适用于POST请求:

`curl -X POST --data-binary @some_file http://host/someurl' 

这显示了终端上的响应。任何想法如何解决这个问题?

+0

我想我在这里失去了一些东西。 Ruby脚本在哪里?只是使用ruby shebang并在最后添加.rb不会使其成为ruby脚本imo。 – Atastor

回答

0

你有一个错字关闭你的back-tick shell命令。你想要:

`curl -X GET http://host/someurl` 

你使用了一个单引号而不是尾部回复。这会导致表达式不被终止。

+0

哦,对不起,这只是一个粘贴在这里的错误;我附上它在'' – constantine1

3

只是把它

puts `curl -X GET http://host/someurl` 
+0

@ constantine1注意这个答案。确保你明白什么反引号:它们捕获命令的标准输出,并且以字符串的形式返回**。你必须用这个返回值做一些事情,或者将它传递给方法(比如'puts')或者将它分配给一个变量。 – Kelvin

+0

固定它;谢谢! – constantine1