Groovy:What';“这有什么不对吗?”;“你好,世界”;节目?

Groovy:What';“这有什么不对吗?”;“你好,世界”;节目?,groovy,Groovy,这不起作用: $ 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!

这不起作用:

$ 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)-发行版(x86_64-pc-linux-gnu)”
  • groovy,版本2.1.3

    • 这在OSX上运行良好。我认为此错误与不正确的终止有关。以下在linux上运行:

      groovy -e 'println "Hello, world!";'
      

      我看到运行版本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
      

      正如BDKosher已经指出的,这是Apache Commons CLI中的一个bug。Groovy希望更新到1.3,但CLI人员在该版本上花时间,并且它包含不兼容性


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

      这不是bash问题,而是groovy问题。(zsh、csh和dash都显示保存行为。)奇怪。0xFFFF是。这可能是,但这意味着错误相当愚蠢。如果你要说你有一个字符,你给出了一个看起来像代码点的东西,你不应该为它编造一个意义!我想Groovy的人会比这更聪明。Unicode中没有字符0xFFFF,所以他们应该使用不同的措辞。#学究他们是cl这是一个Commons CLI问题,但我在Groovy控制台中也看到了同样的问题。这是一个Commons CLI错误。有一项任务是在版本可用时立即更改版本
      C:\Users\mwest>groovy -e "println 'Hello, world!'"
      Hello, world!