Ruby试图使用%x来打印命令行输出

时间:2013-02-13 21:45:09

标签: ruby-on-rails ruby

这就是我的小红宝石计划。它可能看似微不足道,但它似乎没有起作用。

#!/usr/bin/ruby

location = "/home/"

puts %x ("ls " + location)

我收到错误,说这个语法错误,意外的tSTRING_BEG,期待$ end 放%x(“ls”+位置)。

有人可以向我解释我做错了什么吗?谢谢

3 个答案:

答案 0 :(得分:1)

你想:

#!/usr/bin/ruby
location = "/home/"

puts %x(ls #{location})

请注意%x与位置之间的空格,您不需要引号。

答案 1 :(得分:0)

您需要将括号紧邻%x放置,否则它在语法上无效:

%x( ... )  # Valid, enclosed with brackets.
%x ( ... ) # Invalid, %x alone makes no sense.

%q和其他人一样,%x可以使用[ ]{ }< >作为括号。

答案 2 :(得分:0)

您正在%x(之间添加空格。以下内容适用:

location = "/home/"

puts %x[ls #{location}]
puts %x(ls #{location})
puts `ls #{location}`
puts exec "ls #{location}"