26

是否可以在文件开头声明它应该作为 Groovy 脚本执行?

其他脚本语言的示例:

#!/bin/sh
#!/usr/bin/python
#!/usr/bin/perl
4

3 回答 3

55

这个#!/usr/bin/env groovy
将搜索你的路径,寻找 groovy 来执行脚本

于 2011-03-30T00:13:52.593 回答
9

一个常见的技巧是编写一个具有多种语言含义的脚本,也称为“多语言”脚本。

对于 Bash 和 Groovy,这特别容易:

#!/bin/sh
//bin/true; exec groovy -cp .. "$0"

println "Hello from Groovy"
  1. 第一行是 shebang ( #!),它告诉操作系统将脚本作为常规 shell 脚本运行。
  2. 第二行,当由 shell 执行时,调用/bin/true命令(无操作);然后在 PATH 中找到 groovy 可执行文件并在脚本文件本身 ( "$0") 加上其他参数上运行它,替换当前的 shell 进程 ( exec)
  3. Groovy 将忽略第一行,因为它是 shebang;它将忽略第二行,因为它是注释 ( //) 并将运行脚本的其余部分。

如果您需要更精细的 shell 部分,可能是为了设置环境变量,或者发现 Groovy 的安装位置,您可以使用不同的技巧:

#!/bin/sh
'''':
echo Hello from Shell
exec groovy -cp .. "$0"
'''

println "Hello from Groovy"
  1. 再次,shebang 向操作系统发出信号,以开始将这些文件作为 shell 脚本执行。
  2. shell 解析'''':为两个空字符串'',后跟一个冒号,这是一个空操作。
  3. shell 将逐行执行文件的其余部分,直到找到一个exec或一个exit
  4. 如果一切正常,shell 将对脚本文件本身运行 Groovy 命令 ( "$0")
  5. Groovy 将跳过 shebang 行,然后它会解析'''':为一个长字符串的开头''',从而跳过所有的 shell 命令,然后运行脚本的其余部分。
于 2017-06-06T08:29:12.817 回答
6

根据这个你可以使用#!/usr/bin/groovy(如果那是它的位置)。您要查找的搜索词是shebang(即第一行的名称)。

于 2011-03-29T22:46:59.217 回答