Shebang和Groovy

时间:2011-03-29 22:33:58

标签: shell groovy shebang

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

其他脚本语言的示例:

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

3 个答案:

答案 0 :(得分:49)

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

答案 1 :(得分:5)

根据this,您可以使用#!/usr/bin/groovy(如果这是它的位置)。您正在寻找的搜索词是shebang(这是第一行的名称)。

答案 2 :(得分:3)

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

对于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;它将忽略第二行,因为它是一个注释(//)并将运行脚本的其余部分。
  4. 如果您需要更复杂的shell部件,可能要设置环境变量,或者发现Groovy的安装位置,您可以使用其他技巧:

    #!/bin/sh
    '''':
    echo Hello from Shell
    exec groovy -cp .. "$0"
    '''
    
    println "Hello from Groovy"
    
    1. 再一次,shebang发信号通知操作系统开始以shell脚本的形式执行这些文件。
    2. shell将'''':解析为两个空字符串''后跟冒号,这是一个无操作。
    3. shell将逐行执行文件的其余部分,直到找到execexit
    4. 如果一切正常,shell将在脚本文件本身上运行Groovy命令("$0"
    5. Groovy将跳过shebang行,然后它将'''':解析为长字符串'''的开头,从而跳过所有shell命令,然后运行脚本的其余部分。