1

这就是我的小红宝石程序。它可能看起来微不足道,但似乎不起作用。

#!/usr/bin/ruby

location = "/home/"

puts %x ("ls " + location)

我收到一条错误消息,提示此语法错误,意外 tSTRING_BEG,期望 $end puts %x ("ls" + location)。

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

4

3 回答 3

1

你要:

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

puts %x(ls #{location})

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

于 2013-02-13T21:49:30.257 回答
0

您需要将括号紧邻 the%x或它在语法上无效:

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

Like%q和 others,%x可以使用[ ],{ }< >作为括号。

于 2013-02-13T21:47:32.953 回答
0

%x您在和之间添加空格(。以下将起作用:

location = "/home/"

puts %x[ls #{location}]
puts %x(ls #{location})
puts `ls #{location}`
puts exec "ls #{location}"
于 2013-02-13T21:51:02.893 回答