如何使用“ ruby​​ -e”执行多行程序?

时间:2019-05-05 17:45:33

标签: ruby

我想通过“ ruby​​ -e”执行程序,但是如果它在单行中,则执行程序,但如果是多行,则不执行,并引发错误。例如,

>ruby -e "puts 'rajagopalan'"
=>rajagopalan

但是

>ruby -e "a=[1,2,3,4,5]
a.each do |i|
   puts i
end
"

它抛出错误“ a.each do | i | 该命令的语法不正确。 “

有人可以指导我如何通过ruby -e

我已在此处附加图片 enter image description here

3 个答案:

答案 0 :(得分:0)

您可以在shell命令中尝试here document

ruby <<END
 a=[1,2,3,4,5]
 a.each do |i|
   puts i
 end
END

希望这会有所帮助。...

答案 1 :(得分:0)

尝试一下:

>ruby -e "a=[1,2,3,4,5]; a.each do |i| puts i; end"

基本思想,在需要换行的地方使用分号。

答案 2 :(得分:0)

这与Ruby无关。您需要阅读终端仿真器和Shell的手册,并弄清楚如何转义换行符。

从您所发布的错误中可以看出,第一行之后会出现shell提示,因此shell显然认为命令已完成。因此,shell尝试将Ruby命令解释为shell命令,从而导致错误。