15

这不起作用:

$ groovy -e 'println "Hello, world!"'
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
script_from_command_line: 1: unexpected char: 0xFFFF @ line 1, column 23.
   println "Hello, world!
                         ^

1 error

但是,在最后一个双引号和单引号之间放置一个空格是可行的……

$ # groovy -e 'println "Hello, world!"'
$   groovy -e 'println "Hello, world!" '
Hello, world!

...即使bash似乎能够正确处理尾随"'对(即,没有任何中间空间)如下:

$ echo '"Hello, world!"'
"Hello, world!"

此外,将参数括起来也println可以正常工作:

$ groovy -e 'println ("Hello, world!")'
Hello, world!

现在,我想知道为什么第一个案例不起作用。

我在用着:

  • bash,版本“4.2.45(1)-release (x86_64-pc-linux-gnu)”
  • 时髦的,版本 2.1.3
4

3 回答 3

4

正如 BDKosher 已经说过的,这是来自 Apache Commons CLI 的错误。Groovy 想要更新到 1.3,但是 CLI 的人花时间在那个版本上,它包含不兼容性。

正如我在上面的评论中所写的那样,antlr 已经使用 0xFFFF 来显示文件的结尾,它不必是有效的 unicode 字符。措辞因此受到批评,但措辞来自解析器生成器antlr,而不是来自我们。

于 2013-08-23T07:46:38.037 回答
0

我看到运行版本 2.1.3 和 Java 6 的异常:

    C:\Users\mwest>groovy -e 'println "Hello, world!"'
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
script_from_command_line: 1: expecting ''', found '<EOF>' @ line 1, column 9.
   'println

奇怪地颠倒报价有效

C:\Users\mwest>groovy -e "println 'Hello, world!'"
Hello, world!
于 2013-07-12T15:52:31.340 回答
-2

This runs fine on OSX. I think this error has to do with improper termination. The following runs on linux:

groovy -e 'println "Hello, world!";'
于 2013-06-14T01:50:35.930 回答