首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Shebang和Groovy

Shebang和Groovy
EN

Stack Overflow用户
提问于 2011-03-30 06:33:58
回答 3查看 18.1K关注 0票数 26

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

其他脚本语言的示例:

代码语言:javascript
复制
#!/bin/sh
#!/usr/bin/python
#!/usr/bin/perl
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-30 08:13:53

这一个#!/usr/bin/env groovy

将搜索您的路径以查找groovy来执行脚本

票数 55
EN

Stack Overflow用户

发布于 2017-06-06 16:29:13

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

在Bash和Groovy的情况下,这特别容易:

代码语言:javascript
复制
#!/bin/sh
//bin/true; exec groovy -cp .. "$0"

println "Hello from Groovy"

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

如果您需要更复杂的shell部分,比如设置环境变量,或者发现Groovy的安装位置,您可以使用不同的技巧:

代码语言:javascript
复制
#!/bin/sh
'''':
echo Hello from Shell
exec groovy -cp .. "$0"
'''

println "Hello from Groovy"

  1. 再一次,shebang向操作系统发出信号,让操作系统开始将这些文件作为shell脚本执行。
  2. shell将'''':解析为两个空字符串'',后跟一个冒号,这是无操作的。
  3. shell将逐行执行文件的其余部分,直到找到execexit
  4. If一切正常为止,shell将对脚本文件本身运行Groovy命令,shell将跳过shebang行。然后,它会将'''':解析为长字符串'''的开头,从而跳过所有外壳命令,然后运行脚本的其余部分。
票数 9
EN

Stack Overflow用户

发布于 2011-03-30 06:46:59

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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5479731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档