回答
這一個#!/usr/bin/env groovy
會搜索自己的路徑尋找常規執行腳本
一個限制是你不能在linux上使用shebang時給groovy任何參數(如類路徑)。看[這個答案](http://stackoverflow.com/a/8945888/54396)。 – Patrick 2012-01-20 18:40:19
根據this你可以使用#!/usr/bin/groovy
(如果那是它的位置)。您正在查找的搜索字詞是shebang
(這是第一行被稱爲的內容)。
謝謝!我知道組合#!有特殊的名字,但我沒有記住它。 – Nulldevice 2011-03-30 11:24:00
如果它可以幫助你記住,該行的起始符號是一個「尖銳的」**#**和一個interrobang **!**,因此術語「shebang」。 – mfortner 2015-02-08 00:04:29
@mfortner一個很好的助記符,但感嘆號是一個爆炸聲,而不是一個音調。 [interrobang](https://en.wikipedia.org/wiki/Interrobang)是組合感嘆號/問號符號(‽)。 – 2017-02-07 15:37:12
一種常見的伎倆是寫一個腳本,已經在一種以上語言的意思,也被稱爲「多語種」的腳本。
在bash和Groovy的情況下,這是特別容易的:
#!/bin/sh
//bin/true; exec groovy -cp .. "$0"
println "Hello from Groovy"
- 的第一行是一個認領(
#!
),它告訴OS來運行該腳本作爲常規外殼腳本。 - 第二行,當由shell執行時,調用
/bin/true
命令(無操作);然後在PATH中找到groovy可執行文件並在腳本文件本身上運行它("$0"
)以及其他參數,替換當前的shell進程(exec
) - Groovy將忽略第一行,因爲它是一個shebang;它會忽略第二行,因爲它是一條評論(
//
),並且會運行腳本的其餘部分。
如果您需要更精細的外殼部分,可能建立的環境變量,或發現安裝了Groovy的地方,你可以使用不同的技巧:
#!/bin/sh
'''':
echo Hello from Shell
exec groovy -cp .. "$0"
'''
println "Hello from Groovy"
- 再次,家當信號操作系統開始執行這個文件作爲shell腳本。
- shell將
'''':
解析爲兩個空字符串''
後跟一個冒號,這是一個空操作符。 - 外殼將執行該文件的其餘部分,一行行,直到它找到一個
exec
或exit
- 如果一切正常,shell將運行該腳本文件本身(
"$0"
) Groovy的命令
- Groovy將跳過shebang行,然後它將解析
'''':
作爲長字符串'''
的開頭,從而跳過所有shell命令,然後運行腳本的其餘部分。
- 1. shebang路徑
- 2. Windows/cygwin shebang line
- 3. shebang for custom shell?
- 4. 有沒有一種方法可以爲groovy腳本創建多行shebang?
- 5. 便攜式shebang線
- 6. Shebang與doxygen衝突
- 7. 什麼是shebang/hashbang?
- 8. PHP shebang不恰當?
- 9. JSR-223和Groovy
- 10. 的Groovy和JUnit
- 11. Groovy @CompileStatic和Grails
- 12. Groovy HTTPBuilder和Jackson
- 13. Groovy ++和XML
- 14. JavaEE EJB和Groovy
- 15. 在sitemap或shebang中的escaped_fragment?
- 16. shebang如何執行程序?
- 17. #怎麼樣! shebang的工作?
- 18. 相同的shebang不工作
- 19. 有條件的Perl Shebang?
- 20. 如何使javascript支持shebang(#!)?
- 21. OCaml shebang語法錯誤
- 22. Perl如何處理shebang行?
- 23. Shebang導致腳本失敗
- 24. Shebang在節點窗口
- 25. Shebang for scripts does not working
- 26. Shebang(#!)是否標準化?
- 27. 單聲道框架shebang linux
- 28. Groovy和Sublime Text 2
- 29. Groovy,Netbeans和Java EE
- 30. 迭代和Groovy閉
當你知道#!被稱爲「shebang」,正如你可以從我不知道的評論中看到的那樣。 – Nulldevice 2011-03-30 13:32:38
請注意,shebang行上的第一個單詞必須是二進制可執行文件。如果碰巧你的「groovy」程序是一個shell腳本,你必須使用'#!/ usr/bin/env groovy'表單。 – 2011-03-30 17:21:53
有趣的是,它使用谷歌搜索它返回到這個頁面。堆棧溢出實際上是最好的資源,即使是像這樣的簡單問題。其他人會直接來到這裏,得到一個權威的答案,而不是瀏覽不同的博客文章。 – 2014-03-14 18:35:39