为什么`ruby -e`不在Powershell中工作?

时间:2013-07-03 23:54:31

标签: ruby powershell

我刚刚在Windows 8上完成了最新的Ruby版本2.0.0-p247的构建和安装。(注意:我还使用预构建的RubyInstaller测试了相同的结果)

尝试从命令行执行一个简单的Hello World示例会产生两种不同的结果,具体取决于是从Powershell还是cmd启动ruby。

Powershell:
.\ruby -e 'puts "Hello, World!"' # -e:1: syntax error, unexpected end-of-input

cmd:
.\ruby -e 'puts "Hello, World!"' # Hello, World!

为什么ruby在Powershell环境中失败了?

注意:Windows 8包含Powershell 3.0(未经过1.0或2.0测试)

2 个答案:

答案 0 :(得分:2)

在cmd.exe中,单引号字符传递给ruby,而在Powershell中,它们被解释为包含单引号字符串文字。

这可能有效(Powershell语法传递值为'puts "Hello!"'的字符串(包括单引号):

PS> ruby -e "'puts `"Hello!`"'"

如果没有,你可以依靠新的PS v3“停止解析”符号--%

PS> ruby -e --% 'puts "Hello!"'

答案 1 :(得分:0)

安装ruby时,ruby别名将添加到命令提示符中。我不认为他们也为Powershell添加别名。要运行它,您必须设置安装ruby的路径,然后运行命令。

示例:

Cd C:\Ruby193\bin
ruby -e 'puts "Hello, World!"'