51

当我这样做时which groovy,我得到了以下输出:

/usr/local/bin/groovy

所以我继续创建了一个helloworld.groovy具有以下内容的

#!/usr/local/bin/groovy
println "hello world"

之后我做了chmod +x helloworld.groovy并尝试运行该文件,./hellworld.groovy遗憾的是,我收到了这个错误./helloworld.groovy: line 2: print: command not found

我可以通过更改为来摆脱错误

#!/usr/bin/env groovy
println "hello world"

为什么第一种方法会导致错误?

4

4 回答 4

78

您需要像这样运行脚本:

groovy helloworld.groovy
于 2013-09-10T23:42:32.230 回答
1
#!groovy
println("hello world!")
$ chmod +x script.groovy
$ ./script.groovy
于 2021-08-16T07:46:16.877 回答
-1

它将适用于 Linux 内核 2.6.28(在 4.9.x 上确认)。它不适用于 FreeBSD 和其他 Unix 风格。

/usr/local/bin/groovy是一个封装了运行 Groovy 的 Java 运行时的 shell 脚本。

请参阅EXECVE(2)EXECVE(2)的解释器脚本部分。

于 2017-10-04T15:42:30.193 回答
-1
#!/bin/sh
sed '1,2d' "$0"|$(which groovy) /dev/stdin; exit;

println("hello");
于 2018-08-02T15:11:47.850 回答