我正试图在bash中运行ruby one-liner,这就是:
~$ echo a$'\n'b$'\n'c | ruby -pe 'sub(/./,"x")'
x
x
x
~$ echo a$'\n'b$'\n'c | ruby -pe '$_.sub!(/./){"x"}'
x
x
x
~$ echo a$'\n'b$'\n'c | ruby -pe 'sub(/./){"x"}'
-e:1:in `sub': wrong number of arguments (1 for 1..2) (ArgumentError)
from -e:1:in `sub'
from -e:1:in `<main>'
为什么命令#3不像命令#2那样工作?
(这是ruby 1.9.2。回声声明只提供三行输入)
答案 0 :(得分:0)
看起来这是bug in 1.9.2。它是fixed for 2.0.0(和backported to 1.9.3)。修复只是升级到更新版本的Ruby。
如果可以的话,你应该升级,因为support for 1.9.2 has just ended。