我专门使用OS X Terminal.app来获取命令行内容,但这个问题也可能适用于其他命令行工具。
假设我想从命令行运行这个ruby代码块:
Cats.each do |cat|
cat.name = 'Mommy'
cat.kittens each do |kitten|
kitten.color = "Brown"
end
end
现在,如果我复制/粘贴它就会被分解并且不会执行。
答案 0 :(得分:24)
ruby -e "Cats.each do |cat|
cat.name = 'Mommy'
cat.kittens each do |kitten|
kitten.color = 'Brown'
end
end"
答案 1 :(得分:1)
首先,您需要运行irb(或使用ruby -e
将代码传递给解释器),因为终端不知道该代码块是什么或如何解释它。
之后你应该能够像你说的那样粘贴它。
答案 2 :(得分:1)
请注意,Terminal.app本身不是Ruby解释器。您需要启动irb
以获取交互式Ruby控制台:
user@host # irb
irb(main):001:0> Cats.each do |cat|
irb(main):002:1* cat.name = 'Mommy'
irb(main):003:1>
irb(main):004:1* cat.kittens each do |kitten|
irb(main):005:2* kitten.color = "Brown"
irb(main):006:2> end
irb(main):007:1> end
NameError: uninitialized constant Cats
from (irb):1
from :0
您可以使用other tricks在特定脚本的上下文中运行irb
。