为什么Groovy命令行参数有不同的行为?

为什么Groovy命令行参数有不同的行为?,groovy,Groovy,我有一个名为test.groovy的groovy文件,其中只有一行代码: println args[0]; 当我像这样运行这个程序时,groovytestants,输出是ants 但是当我用参数ants(运行程序时,我会得到如下错误: > > > bash:意外标记附近出现语法错误( 1) 如果我转义字符(),那么我将以蚂蚁()的形式获得输出。但是为什么需要转义( 当我使用参数ant的运行程序时,单击enter将使我的终端如下所示: > > > 2) 我

我有一个名为
test.groovy
的groovy文件,其中只有一行代码:

println args[0];
当我像这样运行这个程序时,
groovytestants
,输出是
ants

但是当我用参数
ants(
运行程序时,我会得到如下错误:

>
>
>
bash:意外标记附近出现语法错误(

1) 如果我转义字符
),那么我将以
蚂蚁(
)的形式获得输出。但是为什么需要转义

当我使用参数
ant的
运行程序时,单击enter将使我的终端如下所示:

>
>
>
2) 我只使用
ctrl+c
终止程序。这种情况下会发生什么?为什么我的终端看起来像这样

3) 在看到这些之后,根据命令行参数和Java的相同情况,Groovy将遵循哪些规则和条件

提前感谢。

您需要将其转义为(在您使用的bash shell中有一个含义)

同样的道理也适用于

尝试其他命令:

ls (

你会得到同样的效果

另一种选择(除了转义)是将参数放入引号字符中,如下所示:

groovy test 'ants('
您需要将其转义为(在您使用的bashshell中有意义)

同样的道理也适用于

尝试其他命令:

ls (

你会得到同样的效果

另一种选择(除了转义)是将参数放入引号字符中,如下所示:

groovy test 'ants('

Bash正在解析那些选项,而不是groovy。将
groovy测试
替换为
echo
,您将得到相同的结果。Bash正在解析那些选项,而不是groovy。将
groovy测试
替换为
echo
,您将得到相同的结果。